C++ 非静态成员引用必须相对于特定对象单例类C++;
我有一个单身班。我想为结构成员指定一个值。但是编译器抛出一个错误,即非静态成员引用必须是相对于特定对象的。 请帮助我,如何解决同样的问题C++ 非静态成员引用必须相对于特定对象单例类C++;,c++,singleton,C++,Singleton,我有一个单身班。我想为结构成员指定一个值。但是编译器抛出一个错误,即非静态成员引用必须是相对于特定对象的。 请帮助我,如何解决同样的问题 class abc{ static abc* m_selfInst; public: struct abcd{ int a; }abcd; abc* GetInstance(); }; abc* abc::m_selfInst = NULL; abc* abc::GetInstance() { if(m
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类{
静态abc*m_selfInst;
公众:
结构abcd{
INTA;
}abcd;
abc*GetInstance();
};
abc*abc::m_selfInst=NULL;
abc*abc::GetInstance()
{
如果(m_selfInst==NULL)
{
m_selfInst=新abc();
}
返回m_selfInst;
}
int main()
{
abc*ab=abc::GetInstance();//此处发生错误
abc::abcd.a=5;//此处也发生错误
//coutGetInstance
应该是static
函数
static abc* GetInstance();
对a
的访问应使用类型为abc
的变量
ab->abcd.a
abc::abcd.a = 5;
结构abcd
和名为abcd
的类型为abcd
的对象确实令人困惑。
也许应该是这样
struct {
int a;
} abcd;
GetInstance
应该是static
函数
static abc* GetInstance();
对a
的访问应使用类型为abc
的变量
ab->abcd.a
abc::abcd.a = 5;
结构abcd
和名为abcd
的类型为abcd
的对象确实令人困惑。
也许应该是这样
struct {
int a;
} abcd;
必须声明GetInstance()
方法static
,否则只能在abc
的实例上调用它
ab->abcd.a
abc::abcd.a = 5;
这里,abc::abc
是类型。您可能需要参考指向ab
的abc
实例的abc
实例:
ab->abcd.a = 5;
实际上,您应该避免给实例和类型赋予相同的名称(如在struct abcd
和instanceabcd
中)
必须声明GetInstance()
方法static
,否则只能在abc
的实例上调用它
ab->abcd.a
abc::abcd.a = 5;
这里,abc::abc
是类型。您可能需要参考指向ab
的abc
实例的abc
实例:
ab->abcd.a = 5;
实际上,您应该避免给实例和类型赋予相同的名称(如在struct abou
和实例abou
中).@永远谢谢。我被所有的ab
、abc
和abc
s弄糊涂了。永远谢谢。我被所有的ab
、abc
和abc
弄糊涂了。当我将结构设置为typedef struct
时,我无法从主目录访问结构名称,我该怎么办?:-下拉列表中缺少类名,不允许编译器抛出错误,因为类型名是不允许的
。例如,typedef struct abcd{…};
main(){ab->abcd.a=5;}.abcd出现错误,因为不允许使用
类型名称`@rasmiranjanayak你在做什么?为什么typedef
?使用struct-struct\u-name{…}结构代码是结构的名称。可能是你试图阅读关于C++的书籍。我得到了答案。thnnk为你的帮助。当我构造结构为<代码> TyPufFrase GTI时,我不能从主目录访问结构名称,那么我该怎么办?:从下拉列表中删除类名,编译器抛出一个n不允许出现类型名为的错误
。例如,typedef struct abcd{…};
main(){ab->abcd.a=5;}。在abcd时,错误是因为类型名不允许出现
你在做什么?为什么typedef
?使用struct struct\u name{…}ABS/<代码>结构StReNEX是Strut的名字。你可以试着阅读关于C++的书籍吗?我得到了答案。