gpt4 book ai didi

c++ - 使用静态类函数创建单例对象/实例

转载 作者:行者123 更新时间:2023-11-28 01:08:44 31 4
gpt4 key购买 nike

我正在尝试创建一个静态成员函数,它返回一个指向类的一个实例的指针。这在 C++ 中可能吗?

    class DynamicMemoryLog
{
// Singleton Class:

public:

static DynamicMemoryLog* CreateLog();
void AddIObject( IUnknown* obj );
void ReleaseDynamicMemory();

private:
// static DynamicMemoryLog* instance;
static bool isAlive; // used to determine is an instance of DynamicMemoryLog already exists

DynamicMemoryLog();
~DynamicMemoryLog();

std::vector <IUnknown*> iObjectList;
};

下面的这个函数应该创建一个类的新实例并返回一个指向该对象的指针,但是如果它返回一个指针,编译器将不允许我定义类的静态函数(我认为这就是它无法编译的原因?):

static DynamicMemoryLog* DynamicMemoryLog :: CreateLog()
{
// Post:

if ( !isAlive ) // ( instance == NULL; )
{
DynamicMemoryLog* instance = new DynamicMemoryLog();
return instance;
}

return NULL;
}

最佳答案

您遇到的特定错误是,在实现静态成员函数时,您没有重复使用 static 关键字。修复此问题应该可以解决错误。

独立地,您的代码有些奇怪。您声称此对象是单例,但每次调用 CreateLog 都会创建该类的一个新实例。你真的想要这种行为,还是你想要有很多拷贝?我建议在继续之前先调查一下。

关于c++ - 使用静态类函数创建单例对象/实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4722917/

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