Экземпляр своего класса как поле C++? Доброго времени суток, Я долго программировал на C#, и решил попробовать плюсы. И они сломали мне голову, таким казалось бы простым понятием как поле класса. В C# поле = другой класс = другая структура = базовая структура(byte,int,char...). Но в C++ при написанииclass MyClass1 { public: MyClass2 mc2; ..{пустой конструктор} }; class MyClass2 { public: int A,B,C; ..{пустой конструктор} }; Компилятор ругается на синтаксическую ошибку, что надо поставить ";" перед типом класса. Но при использовании стандартных типов или самого себя, всё нормально. Может нельзя хранить классы в одном файле?, я уже неделю понять не могу в чём дело!!! простите забыл написать здесь про точку с запятой, в проекте написана.
Проблема здесь в том, что в C++ компилятор читает код сверху вниз, поэтому когда вы объявляете MyClass1 и используете в нем MyClass2 до того, как MyClass2 будет объявлен, компилятор не знает, что такой класс существует.
Для того чтобы избежать данной проблемы, вам необходимо сначала объявить класс MyClass2 перед MyClass1. Таким образом, компилятор будет знать о существовании класса MyClass2 до его использования.
Пример:
class MyClass2 { public: int A,B,C; ..{пустой конструктор} }; class MyClass1 { public: MyClass2 mc2; ..{пустой конструктор} };
Таким образом, ваш код должен скомпилироваться без ошибок. Надеюсь, это поможет вам разобраться с проблемой! Если у вас есть еще вопросы, не стесняйтесь задавать.
Проблема здесь в том, что в C++ компилятор читает код сверху вниз, поэтому когда вы объявляете MyClass1 и используете в нем MyClass2 до того, как MyClass2 будет объявлен, компилятор не знает, что такой класс существует.
Для того чтобы избежать данной проблемы, вам необходимо сначала объявить класс MyClass2 перед MyClass1. Таким образом, компилятор будет знать о существовании класса MyClass2 до его использования.
Пример:
class MyClass2{
public:
int A,B,C;
..{пустой конструктор}
};
class MyClass1
{
public:
MyClass2 mc2;
..{пустой конструктор}
};
Таким образом, ваш код должен скомпилироваться без ошибок. Надеюсь, это поможет вам разобраться с проблемой! Если у вас есть еще вопросы, не стесняйтесь задавать.