如何在带有不完整的前向声明类的头文件中声明智能指针?

问题描述

我有一个带有前向声明类的标头,我想在其中声明一些智能指针成员。但是,由于智能指针模板类型在声明时在技术上是不完整的,因此我收到有关sizeof无法执行的编译错误用于唯一指针。我是否必须将实现标头放入类的标头中,而不是前向声明它们,还是可以向我的前向声明提供一个满足智能指针的附加存根?

例如,这是头文件:

#include <memory>

namespace N {
    class A;
    class Owner {
        std::unique_ptr<A> myMember;
    }
}

这是源文件:

#include "A.H"

class Owner{
    Owner() {
        myMember = std::make_unique<A>("arg1","arg2");
    }
}

我宁愿不向包含头文件的所有人提供依赖关系,这就是为什么在我使用原始指针时最初对类进行前向声明的原因。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)