Есть ли способ создать класс, у которого есть объект класса, у которого есть объект этого класса в C ++? - PullRequest
1 голос
/ 26 сентября 2011

В C ++ есть ли способ создать класс, который имеет в качестве атрибута объект класса, который имеет в качестве атрибута объект первого класса?

например:

class A {
    B attribute;
public:
    A(){}
};

class B {
    A attribute;
public:
    B(){}
};

Приведенный выше код не компилируется.Есть ли способ сделать что-то похожее?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 26 сентября 2011

Во-первых, вам необходимо объявить класс B.Кроме того, измените атрибуты на указатели, иначе у вас все равно будет ошибка компилятора, даже если вы перенаправляете объявленный B, он все еще не знает реализацию!

Следующий код может помочь, удачи...

class B;

class A {
    B *attribute;
public:
    A(){}
};

class B {
    A *attribute;
public:
    B(){}
};
2 голосов
/ 26 сентября 2011

Эти определения, даже если вы можете использовать предварительное объявление, чтобы заставить их работать (чего вы не можете), по своей сути рекурсивны.A содержит B, который содержит A, который содержит B, и так далее.Это бессмысленно.

0 голосов
/ 26 сентября 2011

Вам нужно переосмыслить свою структуру.Вы пытаетесь определить структуру, которая содержит другую структуру, которая содержит первую структуру, которая содержит вторую структуру, и т.д ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...