非静态成员引用必须相对于特定的c++对象单例类
A nonstatic member reference must be relative to a specific object Singleton class C++
我有一个单例类。我想给一个结构成员赋值。但是编译器抛出一个错误作为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
是type。假设,您需要引用指向ab
:
abc
实例的abcd
实例ab->abcd.a = 5;
您应该避免给实例和类型赋予相同的名称(如struct abcd
和实例abcd
)。
GetInstance
应该是static
的功能
static abc* GetInstance();
访问a
应该使用abc
类型的变量。
ab->abcd.a
结构体abcd
和abcd
类型的对象命名为abcd
真的很混乱。可能应该是
struct {
int a;
} abcd;
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象