gpt4 book ai didi

C++ 静态成员变量

转载 作者:行者123 更新时间:2023-11-28 00:39:55 26 4
gpt4 key购买 nike

我有一个类头:

class Game {
static Game instance;
}

我想在实例化时将“实例”设置为“this”对象,但无法让它工作。

这是我的实现:

Game::Game() {
Game::instance = this;
}

Visual Studio 在 = 的运算符上给出了一个红色波浪形的东西:

Error: no operator "=" matches these operands
operands are types are: Game = Game *

更新
我不明白这个错误,但我尝试将分配代码更改为:

Game::instance = * this;

错误消失了。

所以,现在我想知道,这两个 assignment 语句有什么区别?

我想我有点知道......但最好能有一个解释。

最佳答案

听起来您要使用单例模式!搜索它进行一些阅读。有些人不喜欢它,我从来没有用过它,但如果你想要它,那么你将需要比你拥有的更多的框架。请注意,在您创建对象之前,this 不存在。还要小心,如果您使用 =*this,您将复制一份。

如果您希望您的实例 从程序开始就可用,那么您也许应该只声明该类的全局实例,这样更容易也更安全。单例模式适用于需要延迟实例化或可选类实例化的情况。

关于C++ 静态成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19400921/

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