4
class Dialogue
{
public:
    int id;
    int trigger;
    Question descendants[5]; // Max questions per dialogue
    string text;
};

class Question
{
public:
    int id;
    int descendant;
    int ancestor;
    string text;
};

これをビルドしようとすると、質問の子孫ビットに対して次のエラーが表示されますか?:

エラー 1 エラー C2146: 構文エラー: ';' がありません 識別子 '子孫' の前に c:\users**\documents\visual studio 2012\projects\game\game\dialogue.h 8 1 ゲーム エラー 2 エラー C4430: 型指定子がありません - int と見なされます。注: C++ は default-int をサポートしていません c:\users**\documents\visual studio 2012\projects\game\game\dialogue.h 8 1 ゲーム

4

4 に答える 4

3

または、クラスを前方宣言することもできます。これは、両者が相互に依存している場合に便利です。

class Question;
class Dialogue;

class Dialogue { public: int id; int trigger; Question descendants[5]; // Max questions per dialogue string text; };

class Question { public: int id; int descendant; int ancestor; string text; };

于 2013-02-27T02:19:10.817 に答える
1

定義を切り替える必要があります。Questionこれにより、の宣言で使用するときにコンパイラーに認識されますDialogue

これはコンパイルされます:

class Question
{
public:
    int id;
    int descendant;
    int ancestor;
    string text;
};

class Dialogue
{
public:
    int id;
    int trigger;
    Question descendants[5]; // Max questions per dialogue
    string text;
};
于 2013-02-27T02:15:31.550 に答える
1

クラスQuestionの定義を最初に行い、次にクラスDialogueを定義する必要があります。

class Question
{
public:
    int id;
    int descendant;
    int ancestor;
    string text;
};

class Dialogue
{
public:
    int id;
    int trigger;
    Question descendants[5]; // Max questions per dialogue
    string text;
};
于 2013-02-27T02:15:48.920 に答える
1

クラス宣言の順序を入れ替えます。

class Question
{
public:
    int id;
    int descendant;
    int ancestor;
    string text;
};

class Dialogue
{
public:
    int id;
    int trigger;
    Question descendants[5]; // Max questions per dialogue
    string text;
};
于 2013-02-27T02:16:11.110 に答える