класс — ошибка C ++, которую я не понимаю: синтаксис отсутствует ‘;’ перед идентификатором

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 игра

5

Решение

Или вы можете заранее объявить свои занятия. Это удобно, когда они оба зависят друг от друга:

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; };

4

Другие решения

Вам нужно поменять определения так, чтобы 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;
};
2

Сначала следует определить класс Вопрос, а затем класс Диалог.

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;
};
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;
};
1
По вопросам рекламы [email protected]