是否有一个boost或STL类可以包含一个成员指针,如果它是一个成员变量?

时间:2011-08-04 19:36:55

标签: c++ boost stl

我有两个循环依赖问题的类:

  • A具有B类成员变量
  • B是vector<A>
  • 的子类

我最初这样解决了这个问题:

A.H:

#include "B.h"

class A
{
  B b;
}

B.h:

class A;

class B : public vector<A>
{
}

#include "A.h"

不幸的是,如果在Windows上导出A和B,则在构造B时,MSVC会因为没有A的完整定义而窒息。

要解决这个问题,我需要在A中存储一个指向B的指针。我想要一个包装器,类似于boost :: scoped_ptr,但它在构造函数中创建了一个新对象,并且具有与之相同的复制语义。它指向的对象。这将采取以下形式:

A.H:

class B;

class A
{
  magic_ptr<B> b;
}

B.h:

#include "A.h"

class B : public vector<A>
{
}

在我重新发明轮子之前,有没有人知道这是否已存在于STL或者提升中?

1 个答案:

答案 0 :(得分:0)

你试图找到boost :: shared_ptr吗?