Возможны ли взаимно рекурсивные классы?

Я читал как это можно заставить работать используя прямые объявления.

class A
{
    public:
    B *objB;

    void foo(){}
}

class B
{
    public:
    A *objA;

    void foo(){}
}

Просто хотел подтвердить, возможна ли такая конструкция?

class A
{
    public:
    B objB;

    void foo(){}
}

class B
{
    public:
    A objA;

    void foo(){}
}

PS: Если кто-нибудь может также объяснить, почему/почему это возможно логически в терминах классов, а не только в терминах языка, например, приведя какой-нибудь пример. Что именно это означает в терминах классов?

5
задан Community 23 May 2017 в 12:03
поделиться