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

  • 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会在构造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/

    10-11 23:03
    查看更多