ОБСУЖДЕНИЕ

Специфический случай объявления классов

3 ответов 4,3 тыс.
Автор темы
Есть два класса - А и Б. Каждому экземпляру класса А отвечает конкретный экземпляр класса Б и наоборот. Для обеспечения такого однозначного соответствия между классами удобно было бы включить в качестве элемента класса А ссылку на экземпляр класса Б и наоборот. Вопрос в том, как это правильно объявить? Поскольку если сначала объявлять класс А, например, то компилятор не узнает ссылку на класс Б, которая является его элементом. Как быть?
Заранее благодарен за советы.
 
Каждому экземпляру класса А отвечает конкретный экземпляр класса Б и наоборот.

Не совсем понятно что такое отвечает; А наследует B, а В наследует А?:unsure:
 
Код:
#include <iostream>

class b;

class a
{
int Test;

b* pb;
};

class b
{
int Tets;

a* pa;
};


int main()
{
std::cout << "Hello world!" << std::endl;
return 0;
}
 
Если я правильно понял вопрос, то так:

Код:
class B;
class A
{
public:
A( B* pB ) : m_pB( pB ) {}
private:
B* m_pB;
};

class B
{
public:
B( A* pA ) : m_pA( pA ) {}
private:
A* m_pA;
};