6

汎用の循環バッファテンプレートを作成しようとしていますが、理解できない構文エラーがあります。エラーはコンストラクターにありますが、同じ方法でデストラクタをパラメータ化したようで、それは機能します。私は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
4

1 に答える 1

9

CircBuff確かにタイプに名前を付けるのではなく、意図したタイプの名前はCircBuf1つfです。

<T>コンストラクタとデストラクタの両方の末尾も失う必要があることに注意してください。

于 2012-06-07T20:19:51.990 に答える