C++ - 不完整的类类型?

标签 c++ class object

我最近一直在使用很多 C 和 Java,所以回到 C++ 时我有点困惑为什么这是不允许的。

incomplete type is not allowed

#pragma once

class Expression
{
private:
    Expression power; // <--- incomplete type is not allowed
};

我相信这里的答案是更改行 Expression powerExpression *power但我不明白为什么会这样。我可以声明类似 vector<int> var 的对象不必使它们成为一个指针,但第二个我有一个与它所声明的文件类型相同的对象,我需要一个吗?我环顾四周,但找不到任何有关创建自身对象的类的教程/视频。

最佳答案

如果您将类的实例放入其自身中,您会发现,您正在创建递归,因为每个实例都有自己的表达式能力,并且这种情况会永远持续下去。如果您有一个指针,则可以控制这种无限递归,因为您可以随时将 power 设置为 nullptr(或 NULL/0) >, C++11 之前版本),结束递归。

关于C++ - 不完整的类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39251512/

相关文章:

javascript - ngRepeat 内的动态 ngModel 对象属性

iphone - cocoa touch -- 测试对象是否是 objective-C 对象

java - 在 Java 中处理未初始化的字符串

Python 错误 : PyThreadState_Get: no current thread after compiling an extension

c++ - gdb - 如何查看指针数组的内容?

c++ - 当 auto_ptr 是一个函数的参数时如何调用它!

powershell - 如何在命名空间中组织类?

C++ 类文件

c++ - NPAPI 调用参数包装

python - 如何在类对象上调用 .lower?