#include <memory>
class Data;
std::unique_ptr<Data> p;
//class Data{}; // not working without this
int main(){}
Run Code Online (Sandbox Code Playgroud)
使用g ++ - 5编译此代码会出现这样的错误:
将'sizeof'无效应用于不完整类型'数据'
有人可以解释为什么我取消注释第四行编译会成功吗?据我所知,在第3行编译器没有关于类型数据的完整信息.我们这行只有前瞻性声明.真实声明发生在第4行.
类型的目标类型unique_ptr在模板实例化时可能是不完整的,但必须在unique_ptr可能尝试处理存储的指针时完成,因为它将default_delete被调用.如果您使用自定义删除器,则目标类型可能仍然不完整.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |