gpt4 book ai didi

C++:一个类可以有它自己类型的对象吗?

转载 作者:行者123 更新时间:2023-11-30 02:42:35 25 4
gpt4 key购买 nike

我正在尝试用 C++ 解决 Conway 的生命游戏。所以根据我的设计,我有一个包含 8 个邻居的列表的单元格类,它本身是单元格类型的对象。这样做可以吗?代码看起来像这样

class Cell {
private:
int position_row_;
int position_colm_;
std::shared_ptr<State> state_;

std::vector<Cell> neighbours_;
};

现在,另一个困扰我的问题是,它是什么类型的关系。在设计时我认为它是“聚合”;但现在我不这么认为了。有人可以澄清一下吗?

最佳答案

类不能将自身作为数据成员包含 class C { C c; };有两个原因:

  1. 当您尝试定义数据成员时,该类仍然是一个不完整的类型。
  2. 您正在创建一个无穷无尽的对象链,这需要无限的内存。

类可以包含其自身的 vector class C { std::vector<C> vec; };因为,像指针一样, vector 声明只需要声明数据类型 - 未定义。

您的代码将编译并运行,但您说您的意图是聚合,但事实并非如此:

  • 您的代码 std::vector<Cell> neighbours;组合的情况,因为 vector 中的对象归 Cell 对象所有。
  • 使用指向其他 Cell 对象的指针 std::vector<Cell*> neighbours;将是聚合的情况,因为 Cell 对象将使用 vector 中的对象但不拥有它们。

关于C++:一个类可以有它自己类型的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26947733/

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