c++ - 如果它是成员变量,是否有可以包装成员指针的 boost 或 STL 类?

标签 c++ boost stl

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

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

我最初是这样解决的:

嗯:

#include "B.h"

class A
{
  B b;
}

B.h:

class A;

class B : public vector<A>
{
}

#include "A.h"

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

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

嗯:

class B;

class A
{
  magic_ptr<B> b;
}

B.h:

#include "A.h"

class B : public vector<A>
{
}

在我重新发明轮子之前,有谁知道这是否已经存在于 STL 或 boost 中?

最佳答案

您尝试查找的是 boost::shared_ptr 吗?

关于c++ - 如果它是成员变量,是否有可以包装成员指针的 boost 或 STL 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6947538/

相关文章:

c++ - 有界类型的 static_cast

c++ - 使用 boost::bind 在 std::map 中调用仿函数

c++ - 如何排序 vector<vector<int>>

c++ - std::list 和 std::map 的通用算法?

c++ - 更改字符串语言环境

c++ - 使用 C++ 开始 Windows GUI 应用程序开发

C++继承与重载,重载后调用基方法

C++ 通用类链接错误

c++ - boost::asio::strand && boost::lockfree::spsc_queue

c++ - 如何使用boost从内存映射文件访问内存块?