gpt4 book ai didi

c++ - 自定义类的实例作为另一个类的成员

转载 作者:行者123 更新时间:2023-11-27 23:25:44 27 4
gpt4 key购买 nike

我有一个 Game 类和一个 Player 类,一个名为“player”的 Player 实例是 Game 类的成员。

Game::Game() : player(screen, player_image, 390, 290) { }

friend 告诉我这样做,但我讨厌这样做,原因有二:1. 当我在该行将变量“screen”传递给 Player 时,screen 没有正确初始化,所以我必须稍后再次传递它。2. 看起来很糟糕,直到今天我被告知要这样做之前,我从未见过这样的代码。

那么,有什么办法解决吗?谢谢。

在我的 .hpp 文件中我有:

public: Player player;

最佳答案

我们需要为您的类型查看更多代码,以便为您提供明确的答案。但是,将另一个成员字段传递给其他成员字段的构造函数并没有错,只要它已经初始化。例如

class Game { 
Screen screen;
PlayerImage player_image;
Player player;

Game() :
screen(42),
player(screen, player_image, 390, 290) {

}
};

注意:初始化列表的执行顺序取决于字段在 class 中声明的顺序,而不是初始化列表中列出的顺序。因此,在类型中按依赖顺序声明字段很重要。

编辑

OP 请求在头文件和 cpp 文件之间进行拆分

标题:

class Game { 
Screen screen;
PlayerImage player_image;
Player player;

Game();
};

CPP文件

 Game::Game() : 
screen(42),
player(screen, player_image, 390, 290) {

}

关于c++ - 自定义类的实例作为另一个类的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9649035/

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