Существует ли класс повышения или STL, который может обернуть указатель на член, если он был переменной-членом? - PullRequest
2 голосов
/ 04 августа 2011

У меня есть два класса с проблемой циклической зависимости:

  • 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?

1 Ответ

0 голосов
/ 06 августа 2011

Является ли boost :: shared_ptr тем, что вы пытаетесь найти?

...