2013-09-14 3 views
1

Почему я не могу объявить тип поля класса другого класса? Это дает мне C4430 ошибка:Невозможно объявить тип поля класса другого класса

//Entity.h file 
    class Entity 
    { 
    public: 
     Box test; 
    }; 


    class Box 
    { 
    public: 
     double length; // Length of a box 
     double breadth; // Breadth of a box 
     double height; // Height of a box 
    }; 
+0

Определить поле класса сначала, а затем класс. В этой последовательности объект класса еще не знает, что есть поле класса, определенное далее. – Farax

ответ

3

класса Entity нужно знать о классе Box перед определением. Кроме того, поскольку вы включаете объект, а не указатель на Box в свой класс Entity, он также должен знать размер class Box (требуется полное определение класса Box) и определения членов (по мере того как он будет иметь доступ Box::Box, чтобы инициализировать фактическое поле), поэтому вам нужно полное определение Box, прежде чем сделать это поле в вашем классе Entity.

class Box 
    { 
    public: 
     double length; // Length of a box 
     double breadth; // Breadth of a box 
     double height; // Height of a box 
    }; 

    class Entity 
    { 
    public: 
     Box test; 
    }; 
Смежные вопросы