пожалуйста помогите разобраться в следующей ситуации (сразу хочу предупредить, что пример урезал и постарался оставить только то, что имеет значение):
есть два класса, пусть в каждом из них имеется по одному члену - указателю на объект "противоположного" класса (то есть другого класса):
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...
как разрешить эту коллизию?
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум PIMPL без указателя (2016)
- Форум Компиляция .so и непонятки с static членами класса (2018)
- Форум [c++] единый указатель для объектов нескольких разных классов (2009)
- Форум Класс в объекте (2001)
- Форум указатель на статический класс, неверный указатель (2012)
- Форум C++ указатель на временный объект (2007)
- Форум Наркоманский Pimpl (2023)
- Форум хранение указателей на экземпляры класса (2013)
- Форум C++ - указатель на функции класса (2012)
- Форум perl - указатель на метод класса (2005)