1

当我编译我的项目时,我得到了 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

工具.h

class Tools {
  public:
    template<typename T>
    static std::string convert(T);
    static std::vector<std::string> explode(std::string, std::string);
};

工具.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;
}

我看不出有什么错误。你呢?

4

2 回答 2

6

在您的文件“struct.cpp”中,您需要#include <string>以及#include <vector>.

当然,因为所有使用“tools.h”的东西都需要这些,你可能想把它们贴在“tools.h”的顶部,这样你就可以在任何需要的地方包含“tools.h”。

于 2013-07-04T13:58:07.233 回答
3

添加到您的标题:

#include <vector>
于 2013-07-04T13:54:20.573 回答