[英]What's wrong with this header file
这是一个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);
}
似乎您正在返回两个值, void
和vector<std::string>
。 尝试删除函数开头的void
。
除了@Default的(正确和有效)观察之外,如果要将这些函数定义放在标头中,则几乎可以肯定地希望将它们标记为inline
。 否则,如果/如果您将标头包含在多个源文件中,并尝试将它们链接在一起,则会违反一个定义规则。 您的链接器可能会允许它,但是当然不能保证。 @You的建议是显而易见的替代方案:只需将类定义放在标头中,然后将函数定义放在它们自己的源文件中。
void std::vector<std::string> &
是错误的。 您是说const std::vector<std::string> &
还是只是std::vector<std::string> &
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.