gpt4 book ai didi

c++ - 不能在嵌套类中使用父类——即使嵌套类是在之后定义的

转载 作者:行者123 更新时间:2023-11-28 08:08:09 25 4
gpt4 key购买 nike

我现在得到的是这样的设置:

template<typename T> class Parent {
struct Nested;
std::unique_ptr<Nested> ptr;
public:
// stuff
~Parent();
};
template<typename T> struct Parent<T>::Nested {
Parent<T> p;
// stuff
};

Visual Studio 给我一个错误 Nested结构正在使用不完整的类型 Parent - 即使定义在 Parent 之后类(class)结束。

我该如何解决这个问题?

编辑:如果不是很明显,我使用了延迟析构函数定义,直到 Nested类被定义为允许 unique_ptr到一个不完整的类型。此外,它绝对与此无关,因为错误不是 Nested不完整-就是Nested包含 Parent 类型的成员,这是不完整的。此外,如果我使用 std::function<void(Nodes*)> 明确删除删除器问题没有解决。

最佳答案

问题更多出在 unique_ptr 而不是类。将其更改为 shared_ptr 或普通原始指针,代码工作正常。

请从 Stackoverflow 找到以下链接。

Does std::unique_ptr requires to know the full T definition?

更新
根据上面的链接,如果 Parent 没有模板化,代码将与 unique_ptr 一起使用。

关于c++ - 不能在嵌套类中使用父类——即使嵌套类是在之后定义的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9815608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com