gpt4 book ai didi

C++ 组合,一个对象如何知道它所在的类?

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

例如,我有两个类,游戏和逻辑。游戏有一个指向名为 m_Logic 的对象的唯一指针。

class Game {

public:
Game(){}

private:
std::unique_ptr<Logic> m_Logic;
}`

class Logic {

public:
Logic()
bool Run(Game &pGame) {
pGame.GetObjectPtr().DoStuff() return true;
}

在 Logic 类中,我使用了一个引用 Game 对象的方法,所以最终我可以调用:

this->m_Logic->Run(*this);

当我需要组件在了解游戏包含的内容的同时完成其工作时,从游戏类内部,而不必不断地将来自游戏对象本身的单个对象引用传递到它的组件中。

由于在这种情况下它们都相互依赖,有什么替代方案可以使它们尽可能独立,但在遵循良好的设计实践的同时仍然知道彼此可以合作?我的目标是做到这一点,而不必声明对游戏拥有的相同单个对象的引用,并尽可能保持参数清晰。

提前致谢。

最佳答案

如果您不想传入 Game每次,那么最简单的方法就是让它们相互指向。我从您的代码示例中假设 Game拥有Logic ...所以Logic然后应该有一个指向 Game 的非拥有指针:

class Game;

class Logic {
Game* m_Game; // non-owning
};

class Game {
std::unique_ptr<Logic> m_Logic;
};

Game已经拥有m_Logic , 将自己分配给 m_Logic 应该非常简单.如果Game本身构造 Logic对象,那么你甚至可以制作m_Game一个Game&为了更加清晰。

关于C++ 组合,一个对象如何知道它所在的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205929/

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