ヘッダー ファイルにプロトタイプ化されたテンプレート クラス 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 ファイルには 3 つの異なる関数定義があり、すべての行で同じエラーが発生します。小さな間違いを犯していると思いますが、実際にはそれを理解できないようです。
ヘルプと説明は大歓迎です。
編集:
これは同じエラーを持つ SSCCE です: main.cpp
#include <iostream>
#include "myClass.h"
using namespace std;
int main(){
myClass<int> example;
example.myFunction(1);
return 0;
}
myClass.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_ */
myClass.cpp
using namespace std;
template <class T>
void myClass<T>::myFunction(const T item)
{
cout << "Hello World!";
}
GNU GCC コンパイラで Code::Blocks 10.05 を使用しています。