У меня есть сценарий, в котором я не могу создать объект класса внутри другого класса. Сценарий выглядит следующим образом:Не удалось создать объект класса внутри другого класса?
class base
{
public:
base();
~base();
int getbase(void){return baseVar;}
void setbase(int arg){baseVar = arg;}
private:
int baseVar;
};
class derived1 : public base
{
public:
derived1();
~derived1();
int getbase(void);
void setbase(int arg);
private:
int derVar1;
};
class derived2 : public base
{
public:
derived2();
~derived2();
int getbase(void);
void setbase(int arg);
private:
int derVar2;
};
class container
{
public:
container();
~container();
derived1 derObj1;
derived2 derObj2;
private:
int containerVar;
};
class usage
{
public:
usage();
~usage();
private:
container containerObj; // compilation error
int usegeVar;
};
ошибка компиляции: ошибка C2146: синтаксическая ошибка: отсутствует «;» перед идентификатором 'containerObj' ошибка C4430: отсутствует спецификатор типа - int. Примечание: C++ не поддерживает default-int ошибка C4430: отсутствует спецификатор типа - int. Примечание: C++ не поддерживает default-int Я использую vC++
Я прошу кого-нибудь, как исправить эту ошибку компиляции? Заранее спасибо.
Включили ли вы заголовочный файл, определяющий класс 'container' в файле, который определяет класс' usage'? Ошибка означает, что компилятор не может видеть определение типа 'container'. –
Как мы говорили в ВВС: CND (не удалось дублировать). Он скомпилирован без ошибок как с VC++ 10, так и с gcc 4.7. –