gpt4 book ai didi

c++ - 非静态成员引用必须相对于特定对象 Singleton 类 C++

转载 作者:行者123 更新时间:2023-11-30 00:53:33 25 4
gpt4 key购买 nike

我有一个单例类。我想为结构成员赋值。但是编译器抛出错误,因为 A nonstatic member reference must be relative to a specific object。请帮助我,如何解决同样的问题。

class abc{

static abc* m_selfInst;
public:

struct abcd{
int a;
}abcd;

abc* GetInstance();
};

abc* abc::m_selfInst = NULL;

abc* abc::GetInstance()
{
if(m_selfInst == NULL)
{
m_selfInst = new abc();
}
return m_selfInst;
}
int main()
{
abc *ab = abc::GetInstance(); //Error Occurs here
abc::abcd.a = 5; //Error occurs here too
//cout <<ab.abcd.a << "\n";

return 0;
}

最佳答案

abc *ab = abc::GetInstance();

GetInstance()必须声明方法 static , 否则它只能在 abc 的实例上调用.

abc::abcd.a = 5;

在这里,abc::abcd是类型。据推测,您需要引用 abcd abc实例 实例指向ab :

ab->abcd.a = 5;

您真的应该避免为实例和类型赋予相同的名称(如 struct abcd 和实例 abcd)。

关于c++ - 非静态成员引用必须相对于特定对象 Singleton 类 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16141073/

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