如何存储单例类的引用
How to store a reference of a singleton class?
我正在做一个与经销商向玩家发牌有关的项目。
我有单例类Dealer
和另一个类Player
。
我已经为Dealer
制作了instance()
方法,这部分是我困惑的地方:
对于单例Player
类,我如何创建一个名为dealer
的私有成员来保存对单例Dealer
实例的引用?
首先你应该问问自己,你是否真的需要一个单例类来解决这个问题。
你总是可以将Dealer
实例的引用传递给Player
类的构造函数:
class Player {
public:
Player(Dealer& dealer_) : dealer(dealer_) {}
private:
Dealer& dealer;
};
无论它是在堆栈上、堆上还是作为单例实例构造的。
一般推荐的c++单例实现模式是对于单例
Player
类,如何创建私有成员_
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++ 实现模板单例类时出现链接错误
- 具有非默认构造函数的单例类
- 单例类析构函数无法清理 (SDL_Quit) MinGW
- 如何在单例类中管理变量状态?
- 访问单例类C++时出现问题
- 基于 IOKit 的 kext 驱动程序中的单例类
- 指向抽象模板单例类的指针向量C++?
- C++在单例类中创建类实例时遇到困难
- 如果我这样写,我的单例类会导致什么错误
- 这是一个有效的单例类吗?
- 函数内具有静态变量的单例类(迈耶实现)
- 继承的模板化单例类 c++ 中未定义的构造函数
- 为什么调用单例类 Qt 消息处理程序成员函数会出现错误:缺少参数列表
- C++:单例类设计(错误:未解析的外部符号)
- 添加控制器引用/指向c++单例类的指针
- 为什么未定义在我的单例类中引用了mMutex
- 在 c++ 中对错误的未定义引用(使用单例类)
- 非静态成员引用必须相对于特定的c++对象单例类
- c++链接器错误在单例类中未定义引用
- 如何存储单例类的引用