我有一个单身人士课程。我想为结构成员分配一个值。但编译器抛出错误为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;
}
答案 0 :(得分:4)
abc *ab = abc::GetInstance();
GetInstance()
方法必须声明为static
,否则只能在abc
的实例上调用。
abc::abcd.a = 5;
此处,abc::abcd
是类型。大概是,您需要引用abcd
指向的abc
实例的ab
实例:
ab->abcd.a = 5;
您应该避免为实例和类型指定相同的名称(如struct abcd
和实例abcd
)。
答案 1 :(得分:2)
GetInstance
应为static
函数。
static abc* GetInstance();
对a
的访问权应使用abc
类型的变量。
ab->abcd.a
struct abcd
和名为abcd
的{{1}}类型的对象真的令人困惑。
可能它应该是
abcd