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 \ dialog.h 8 1 Ошибка игры 2, ошибка C4430:
отсутствует указатель типа — предполагается int. Примечание: C ++ не поддерживает
default-int c: \ users ** \ Documents \ visual studio
2012 \ проекты \ игра \ игра \ dialog.h 8 1 игра
Или вы можете заранее объявить свои занятия. Это удобно, когда они оба зависят друг от друга:
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; };
Вам нужно поменять определения так, чтобы 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;
};
Сначала следует определить класс Вопрос, а затем класс Диалог.
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;
};
Порядок обмена объявления класса:
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;
};