【发布时间】:2021-08-11 12:42:17
【问题描述】:
我无法在 Visual Studio 2019 中使用 clang-cl 编译以下代码。尽管 VC++ 编译成功。它也适用于自定义删除器。它应该像示例中那样工作吗?如果不是,为什么?
example.h
#include <memory>
class A;
class B {
std::unique_ptr<A> a{ make_a() };
std::unique_ptr<A> make_a();
public:
B(); ~B();
};
example.cpp
#include "example.h"
class A {};
std::unique_ptr<A> B::make_a() {
return std::unique_ptr<A>(new A());
}
B::B() = default;
B::~B() = default;
main.cpp
#include "example.h"
int main()
{
B b;
return 0;
}
错误:“sizeof”对不完整类型“A”的无效应用
【问题讨论】:
-
请分享错误信息
标签: c++ unique-ptr incomplete-type