什么';这个头文件有什么问题 这是一个C++函数头文件。它会产生大量随机错误。我知道这是显而易见的,但我以前从来没有制作过没有类的头文件。它没有链接的cpp文件 #include <vector> #include <sstream> #include <string> #ifndef SPLIT_H #define SPLIT_H void std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems); void std::vector<std::string> split(const std::string &s, char delim); #endif void std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) { std::stringstream ss(s); std::string item; while(std::getline(ss, item, delim)) { elems.push_back(item); } return elems; } void std::vector<std::string> split(const std::string &s, char delim) { std::vector<std::string> elems; return split(s, delim, elems); } #包括 #包括 #包括 #ifndef SPLIT_H #定义拆分 void std::vector&split(常量std::string&s、字符delim、std::vector&elems); void std::vector split(const std::string&s,char delim); #恩迪夫 void std::vector&split(常量std::string&s、字符delim、std::vector&elems){ 标准::stringstream ss(s); std::字符串项; while(std::getline(ss,item,delim)){ 元素推回(项目); } 返回元素; } void std::vector split(const std::string&s,char delim){ std::向量元素; 返回拆分(s、delim、elems); }

什么';这个头文件有什么问题 这是一个C++函数头文件。它会产生大量随机错误。我知道这是显而易见的,但我以前从来没有制作过没有类的头文件。它没有链接的cpp文件 #include <vector> #include <sstream> #include <string> #ifndef SPLIT_H #define SPLIT_H void std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems); void std::vector<std::string> split(const std::string &s, char delim); #endif void std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) { std::stringstream ss(s); std::string item; while(std::getline(ss, item, delim)) { elems.push_back(item); } return elems; } void std::vector<std::string> split(const std::string &s, char delim) { std::vector<std::string> elems; return split(s, delim, elems); } #包括 #包括 #包括 #ifndef SPLIT_H #定义拆分 void std::vector&split(常量std::string&s、字符delim、std::vector&elems); void std::vector split(const std::string&s,char delim); #恩迪夫 void std::vector&split(常量std::string&s、字符delim、std::vector&elems){ 标准::stringstream ss(s); std::字符串项; while(std::getline(ss,item,delim)){ 元素推回(项目); } 返回元素; } void std::vector split(const std::string&s,char delim){ std::向量元素; 返回拆分(s、delim、elems); },c++,function,header-files,C++,Function,Header Files,您似乎返回了两个值,void和vector。 尝试删除函数开头的void void std::vector&错误。你的意思是const std::vector&还是仅仅std::vector& 如果在多个源文件中包含此标头,则可能会收到有关重新定义符号的链接器错误。您应该在源文件中定义函数或使其内联 除了@Default(正确且有效)的观察之外,如果要将这些函数定义放在标题中,几乎肯定要将它们标记为inline。否则,当/如果您在多个源文件中包含头并尝试将它们链接在一起,您将违反“一个定义”规则

您似乎返回了两个值,
void
vector
。 尝试删除函数开头的
void

  • void std::vector&
    错误。你的意思是
    const std::vector&
    还是仅仅
    std::vector&
  • 如果在多个源文件中包含此标头,则可能会收到有关重新定义符号的链接器错误。您应该在源文件中定义函数或使其内联

  • 除了@Default(正确且有效)的观察之外,如果要将这些函数定义放在标题中,几乎肯定要将它们标记为
    inline
    。否则,当/如果您在多个源文件中包含头并尝试将它们链接在一起,您将违反“一个定义”规则。你的链接器可能会允许,但肯定不能保证@您的建议是显而易见的选择:只需将类定义放在头文件中,并将函数定义放在它们自己的源文件中。

    不要在头文件中实现您的函数-它仅用于定义。@You:这没有任何意义。也许你的意思是“它只用于声明”。这是有争议的。