我在头文件中有一个模板类 myClass 原型,并在头文件末尾包含的 .cpp 文件中实现它。当我使用代码时:
template<typename T>
class myClass {
public:
void myFunction(const T item);
};
在头文件和
template <class T>
void myClass<T>::myFunction(const T item)
{
//stuff
}
在实现文件中,我在实现代码的第 2 行得到了上述错误。我在另一个程序中使用了相同的完全相同的语法,并成功编译并正确运行结果,所以我很困惑。.cpp 文件中有三个不同的函数定义,并且在各自的行上都有相同的错误。我假设我犯了一个小错误,但我真的无法弄清楚。
非常感谢帮助和解释。
编辑:
这是一个具有相同错误的 SSCCE:main.cpp
#include <iostream>
#include "myClass.h"
using namespace std;
int main(){
myClass<int> example;
example.myFunction(1);
return 0;
}
我的类.h
#include<iostream>
#ifndef MYCLASS_H_
#define MYCLASS_H_
template<typename T>
class myClass {
public:
void myFunction(const T item);
};
#include "myClass.cpp"
#endif /* MYCLASS_H_ */
我的类.cpp
using namespace std;
template <class T>
void myClass<T>::myFunction(const T item)
{
cout << "Hello World!";
}
我正在使用带有 GNU GCC 编译器的 Code::Blocks 10.05。