当我编译我的项目时,我收到了tools.h / tools.h的奇怪错误。 字符串和向量类通过std命名空间使用。我只是看不出任何错误。
g++ powerpi.cpp structs.cpp xmlreader.cpp tools.cpp -o powerpi
In file included from structs.cpp:5:
tools.h:5: error: ISO C++ forbids declaration of ‘vector’ with no type
tools.h:5: error: invalid use of ‘::’
tools.h:5: error: expected ‘;’ before ‘<’ token
的Tools.h
class Tools {
public:
template<typename T>
static std::string convert(T);
static std::vector<std::string> explode(std::string, std::string);
};
tools.cpp
#include <sstream>
#include <vector>
#include <string>
#include "tools.h"
template <typename T>
std::string Tools::convert(T Number)
{
std::ostringstream ss;
ss << Number;
return ss.str();
}
std::vector<std::string> Tools::explode(std::string delimiter, std::string str)
{
std::vector<std::string> arr;
int strleng = str.length();
int delleng = delimiter.length();
if (delleng==0)
return arr;//no change
int i=0;
int k=0;
while( i<strleng )
{
int j=0;
while (i+j<strleng && j<delleng && str[i+j]==delimiter[j])
j++;
if (j==delleng)//found delimiter
{
arr.push_back( str.substr(k, i-k) );
i+=delleng;
k=i;
}
else
{
i++;
}
}
arr.push_back( str.substr(k, i-k) );
return arr;
}
我看不出任何错误。你呢?
答案 0 :(得分:6)
在您的文件“struct.cpp”中,您需要#include <string>
以及#include <vector>
。
当然,由于使用“tools.h”的所有东西都需要这些,你可能想把它们放在“tools.h”的顶部,这样你就可以在任何需要的地方加入“tools.h”。
答案 1 :(得分:3)
添加到标题中:
#include <vector>