пожалуйста помогите разобраться в следующей ситуации (сразу хочу предупредить, что пример урезал и постарался оставить только то, что имеет значение): есть два класса, пусть в каждом из них имеется по одному члену - указателю на объект "противоположного" класса (то есть другого класса): class A { B* b; }; class B { A* a; }; чтобы не было недоразумений, необходимо перед определением класса A поместить объявление класса B: class B; class A { B* b; }; class B { A* a; }; теперь добавляем в классконструкторы: class B; class A { B* b; public: A(B* btmp = 0) { b = btmp; } }; class B { A* a; public: B(A* atmp = 0) { a = atmp; } }; пока проблем нет... но как видим, мы в констукторе копируем только указатели... и если только я пытаюсь написать следующее: A(B btmp = 0) { b = new B(btmp); } то тут уже объявления в начале класса B не хватает, и компилятор возникает: undefined structure B... как разрешить эту коллизию?