gpt4 book ai didi

c++ - 如何存储单例类的引用?

转载 作者:行者123 更新时间:2023-12-01 14:41:38 26 4
gpt4 key购买 nike

我正在做一个与庄家向玩家发牌有关的项目。
我有单例类 Dealer 和另一个名为 Player 的类。

我已经为 Dealer 制作了 instance() 方法,这部分是我感到困惑的地方:

对于单例 Player 类,我如何创建一个名为 dealer 的私有(private)成员来保存对单例 Dealer 实例的引用?

最佳答案

首先你应该问问自己,你是否真的需要一个单例类来解决这个问题。

您始终可以将对 Dealer 实例的引用传递给您的 Player 类的构造函数:

class Player {
public:
Player(Dealer& dealer_) : dealer(dealer_) {}

private:
Dealer& dealer;
};

无论是在栈上、堆上还是作为单例实例构建。


For the singleton Player class, how do I create a private member ..._

commonly recommended c++ singleton implementation pattern

class Dealer{
public:
static Dealer& instance() {
static Dealer theDealer;
return theDealer;
}

void foo() {}
private:
Dealer() {}
Dealer(const Dealer&) = delete;
Dealer& operator=(const Dealer&) = delete;
};

注意:您不一定需要在客户端类中存储对 Dealer 类的引用,但您可以简单地访问单例实例并调用所需的非静态成员函数

Dealer::instance.foo();

如果你坚持要为单例创建一个引用成员,你可以这样做:

class Player {
public:
Player() : dealer(Dealer::instance()) {}

private:
Dealer& dealer;
};

关于c++ - 如何存储单例类的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23549704/

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