这是编译器输出:
[brian@brian-arch-laptop Lab1]$ g++ -g -Wall -std=c++11 objectIO.cpp main.cpp -o main
objectIO.cpp:33:14: error: prototype for ‘std::vector<Type> objectIO<Type>::loadObjects(Type, std::string, unsigned int, unsigned int)’ does not match any in class ‘objectIO<Type>’
vector<Type> objectIO<Type>::loadObjects(Type dummyObject,
^
objectIO.h:14:23: error: candidate is: static std::vector<Type> objectIO<Type>::loadObjects(std::string, unsigned int, unsigned int)
static vector<Type> loadObjects(Type dummyObject, string fileName, unsigned numObjects,unsigned numLinesPerObject);
^
从我的研究中,我发现这个错误通常在声明一个函数时发生,但是当它们定义它时,它有不同数量的参数或不同类型的参数。我还发现,当使用&#34; const&#34;声明一个函数时,通常会发生此错误。但后来没有使用&#34; const&#34;在定义函数时。
这些情况都不符合我的情况。我有匹配的武器,我没有让我的功能保持不变。以下是我的来源中的问题:
来自我的源(.cpp)文件:
template <class Type>
vector<Type> objectIO<Type>::loadObjects(Type dummyObject,
string filename,
unsigned numObjects,
unsigned numLinesPerObject){/*functionality here*/}
从我的标题(.h)文件:
template <class Type>
class objectIO{
public:
static vector<Type> loadObjects(Type dummyObject, string fileName,
unsigned numObjects,
unsigned numLinesPerObject);
}
答案 0 :(得分:1)
模板类的所有定义都应放在一个头文件中。
答案 1 :(得分:0)
您的代码在课程结束后缺少分号:
template <class Type>
class objectIO{
public:
static vector<Type> loadObjects(Type dummyObject, string fileName,
unsigned numObjects,
unsigned numLinesPerObject);
} /* <-- RIGHT HERE */
这通常会混淆源代码中的下一步,有时会出现错误的错误消息。