Взаимоприникновение классов
От: 777777w  
Дата: 31.10.07 09:01
Оценка:
Есть клас A, в котором находится объект класса B. И класс B, в котором есть перемеррая, являющаяся enum-ом, определенным в классе A. Можно ли это организовать? Выносить определение enum из класса не хотелось бы. Хранить указатель на B вместо объекта — тоже.

class A
{
enum TYPE_OF_CLASS_A { RED, GREEN, BLUE };
B m_obj;
};

class B
{
A::TYPE_OF_CLASS_A m_type_of_A;
};
Re: Взаимоприникновение классов
От: Кодт Россия  
Дата: 31.10.07 09:11
Оценка: 1 (1) +1
Здравствуйте, 777777w, Вы писали:

7>Есть клас A, в котором находится объект класса B. И класс B, в котором есть перемеррая, являющаяся enum-ом, определенным в классе A. Можно ли это организовать? Выносить определение enum из класса не хотелось бы. Хранить указатель на B вместо объекта — тоже.


То есть, вопрос о том, как сделать forward declaration.
А запросто:
struct A_assets
{
    enum TYPE { RED, GREEN, BLUE };
};

class B
{
    A_assets::TYPE a;
};

class A : public A_assets
{
    B b;
};
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: Взаимоприникновение классов
От: Bell Россия  
Дата: 31.10.07 09:32
Оценка: 7 (1)
Здравствуйте, 777777w, Вы писали:

7>Есть клас A, в котором находится объект класса B. И класс B, в котором есть перемеррая, являющаяся enum-ом, определенным в классе A. Можно ли это организовать?


Конечно — путем добавления дополнительного уровня абстакции
struct A_Base
{
   enum TYPE_OF_CLASS_A { RED, GREEN, BLUE };
};

class B
{
   A_Base::TYPE_OF_CLASS_A m_type_of_A;
};

class A : public A_Base
{
   B m_obj;
};
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.