このエラーは一般的ですが、私は4時間修正しようとしていて、なぜそれが発生するのか分かりません。エラー "shape.h" を与えるC2061 C++でエラーが発生しました
ファイル:私は "中" 方式で "クリエーター* [] c" を追加する前に
#ifndef __shape_atd__
#define __shape_atd__
#include <fstream>
using namespace std;
namespace simple_shapes {
class shape
{
public:
enum colors { Red, Orange, Yellow, Green, Blue, DarkBlue, Violet };
colors color;
static shape* In(int lengt, Creator *c[], istringstream &ifst);
virtual void InData(istringstream &) = 0;
virtual void Out(ofstream &) = 0;
shape() {};
}
このすべてがうまく働きました。これでコンパイルが拒否され、エラーC2061:構文エラー:識別子 "Creator"が発生しました。ここで
は「Creator.h」ファイルです:
#ifndef __creator_atd__
#define __creator_atd__
namespace simple_shapes {
class Creator {
public:
virtual shape* createShape() = 0;
};
}
#endif
私は、このエラーが原因で、円形のヘッダの依存関係のoccuresが、私の場合、私はそれらを持っていないことを読みました。また、「Creator.h」は、その子を除いてプログラム内の他のファイルには記載されていません。
をあなたは 'Creator'classためshape''の前方宣言を持っている必要があります。 – user0042
なお、ダブルアンダースコアで始まる名前は、コンパイラ/標準ライブラリ用に予約されています。あなたのインクルードガードのためにそれらを使用しないでください。 –
@ user0042 'shape'クラスの' Creator'で実際に前方宣言が助けになりました。 –