0

ヘッダーファイル(.h)でクラスを宣言し、そのコンストラクターと関数(デフォルトのコンストラクターを含む)を.cppで定義しました。

次に、別のヘッダーファイルでオブジェクトを宣言し、別の.cppファイルで初期化します。オブジェクトの初期化はcppのいくつかの変数に依存するため、このようにする必要があります。.hファイルの宣言は次のように行われます。

Saboteur *activeFault; /*Saboteur is the class, activeFault the object*/

プログラムをコンパイルしようとすると、次のエラーが発生します。

エラーC2143:構文エラー:';'がありません 前 '*'。

なぜこれが起こるのか?

class Saboteurヒント:#includesはすべて問題ありません。最も奇妙なことは、コンパイラがの関数が定義されている.cppファイルをコンパイルしようとするとエラーが発生することですが、エラーは上記の行にあると表示されます(これは他のcppファイルです)。

4

2 に答える 2

4

Saboteur クラスのプロトタイプを作成します。宣言する:

class Saboteur;

のその宣言の前にactiveFault

次に、別の場所で、 の完全な定義を提供しますclass Saboteur

于 2012-12-12T16:53:57.447 に答える
0

心に響くアイデアはたくさんあります

  1. この問題を引き起こしたヘッダー ファイルに妨害工作員の .h ファイルを含めましたか?
  2. これはテンプレート化されたクラスですか?
  3. 妨害工作員クラスを実際にインクルードする前に、妨害工作員を含むヘッダー ファイルがインクルードされている可能性があります。この場合、他の .h ファイルを追加します。

    クラス破壊工作員;

于 2012-12-12T16:57:35.633 に答える