汎用の循環バッファテンプレートを作成しようとしていますが、理解できない構文エラーがあります。エラーはコンストラクターにありますが、同じ方法でデストラクタをパラメータ化したようで、それは機能します。私はStroustrupC++の例に従いました。彼は、私と同じように、スコープ解決演算子の前と関数名でパラメーターを使用しています。また、1つのファイルしかコンパイルしていないため、循環依存関係はないと確信しています。また、実装と宣言は同じファイル(CircBuf.h)にあり、対応する.cppファイルがないため、リンクも問題にはなりません。この解決策に従って「inline」キーワードを追加しようとしましたが、同じエラーが発生します。
/* CircBuf.h */
template<typename T> class CircBuf {
// don't use default ctor
CircBuf();
int size;
T *data;
public:
CircBuf(int);
~CircBuf();
};
template<typename T> CircBuff<T>::CircBuf<T>(int i) {
data = new T[i];
}
template<typename T> CircBuf<T>::~CircBuf<T>() {
delete data;
}
makefile
all:
g++ -g -pedantic CircBuf.h -o prog
コンパイラエラー
CircBuf.h:13:22: error: ‘CircBuff’ does not name a type