2012-05-26 2 views
0

У меня есть сценарий, в котором я не могу создать объект класса внутри другого класса. Сценарий выглядит следующим образом:Не удалось создать объект класса внутри другого класса?

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++

Я прошу кого-нибудь, как исправить эту ошибку компиляции? Заранее спасибо.

+0

Включили ли вы заголовочный файл, определяющий класс 'container' в файле, который определяет класс' usage'? Ошибка означает, что компилятор не может видеть определение типа 'container'. –

+0

Как мы говорили в ВВС: CND (не удалось дублировать). Он скомпилирован без ошибок как с VC++ 10, так и с gcc 4.7. –

ответ

0

Скопируйте наклеенный код на пустой проект VisualC++ 2k8 и все в порядке!

Смежные вопросы