gpt4 book ai didi

C++ 获取对 SingleTune 类成员方法的访问权限 获取对不完整类型的成员访问权限

转载 作者:行者123 更新时间:2023-11-28 02:43:42 27 4
gpt4 key购买 nike

我有一个简单的单例,它拥有另一个类作为它的成员我尝试访问这个成员类的公共(public)方法,我得到:

Member access into incomplete type

我的单例类:

#include "SoundManager.h"
class Singleton : pSoundManager(new SoundManager())
{
public:
static
Singleton getInstance()
{
if (!instance_)
{
instance_ = new Singleton();
}

return instance_;
}
SoundManager* getSoundManager( return pSoundManager;);
private:
static Singleton* instance_;
Singleton() {};
~Singleton(){};
SoundManager* pSoundManager;

}

//单例中保留的类

class SoundManager
{
public:
SoundManager(){};
~SoundManager(){};


unsigned int playEffect() {printf("effect!!");};

private:


};

现在当我尝试做的时候

Singleton::getInstance()->getSoundManager()->playEffect() ;

我得到:

Member access into incomplete type 'SoundManager'

我在这里做错了什么?

最佳答案

这段代码

SoundManager* getSoundManager( return pSoundManager;);

在语法上是错误的,您看到的错误消息可能会产生误导。将此代码替换为

SoundManager* getSoundManager() { return pSoundManager; }

我要做的是稍微简化 getInstance() 函数(除了修复一些明显的语法错误之外):

#include "SoundManager.h"

class Singleton {
public:
static
Singleton& getInstance() {
static Singleton instance_;
return instance_;
}

SoundManager& getSoundManager() { return soundManager_; }
private:
Singleton() {};
~Singleton(){};
SoundManager soundManager_;
};

调用playEffect()函数会变成

Singleton::getInstance().getSoundManager().playEffect();

当然。

关于C++ 获取对 SingleTune 类成员方法的访问权限 获取对不完整类型的成员访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25095544/

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