У меня есть два класса с проблемой циклической зависимости:
- A имеет переменную-член класса B
- B является подклассом
vector<A>
Первоначально я решил это так:
хиджра:
#include "B.h"
class A
{
B b;
}
B.h:
class A;
class B : public vector<A>
{
}
#include "A.h"
К сожалению, если A и B экспортируются в Windows, MSVC не дает полного определения A при построении B.
Чтобы решить эту проблему, мне нужно сохранить указатель на B в A. Я хотел бы обертку для этого, что-то вроде boost :: scoped_ptr, но это создает новый объект в его конструкторе и имеет ту же семантику копирования, что и объект, на который он указывает. Это будет принимать форму:
хиджра:
class B;
class A
{
magic_ptr<B> b;
}
B.h:
#include "A.h"
class B : public vector<A>
{
}
Прежде чем я заново изобрету колесо, кто-нибудь знает, существует ли он уже в STL или boost?