gpt4 book ai didi

c++ - 单例类无法处理多个文件

转载 作者:行者123 更新时间:2023-12-02 10:18:19 25 4
gpt4 key购买 nike

说我有这段代码:

#include <iostream>
using namespace std;

class Something
{
int field1;

static Something *nill;
static bool initialized;

static void initialize() {
if (initialized)
return;
initialized = true;
}

public:
static Something* Nill()
{
initialize();
return nill;
}

static Something* Singleton(int field1)
{
initialize();
Something *ret = new Something();
ret->field1 = field1;

return ret;
}
}

Something* Something::nill = new Something();
bool Something::initialized = false;

int main(void)
{
Something *smth = something->Nill();
return 0;
}

为什么没有“某物”单例类(class),我怎么能使它成为单例类(class)?另外,如何将这段代码分成两个文件.h和.cpp?我遇到了问题,因为我这里有一些全局变量,而且我不知道如何在其他文件中使用它们。

最佳答案

这不是单例类(class)。 Singleton类表示在任何给定时间内,该类的实例不能超过1个。在您的示例中,您不仅要创建一个新实例,甚至还要在其方法中返回新的类对象。

将默认构造函数设置为 protected (如果确实要确保它为单例,则也复制或移动构造函数)。然后使用您的静态“零”,如下所示:

class Something {
protected:
Something() = default;
...

int main() {
Something::nill->Nill();
...

P.s.确定要单例吗?您的方法相反。

关于c++ - 单例类无法处理多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61168299/

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