ISO-C++ verbietet Deklaration von 'vector' with no type

wenn ich kompiliere mein Projekt, ich bin immer dieser komische Fehler für Werkzeuge.h/tools.h.
Der string und vector-Klassen verwendet werden, die über std-namespace. Ich kann einfach nicht sehen, keine Fehler.

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;
}

Ich sehe keinen Fehler. Wie über Sie?

  • Fehlt #include. (Und wahrscheinlich für <string> als gut, obwohl Sie scheinen Pech haben und nicht bekommen eine Fehlermeldung)
  • Sie sollten niemals davon ausgehen, etwas anderes include-Header für Sie.
  • Die Fehlermeldung ist über structs.cpp aber du geschrieben tools.cpp...
  • Nein der header ist enthalten in structs.cpp aber der eigentliche Fehler ist in tools.h
  • Da convert ist eine Vorlage haben, sollten Sie auf die definition in den header.
InformationsquelleAutor toni | 2013-07-04
Schreibe einen Kommentar