繁体   English   中英

typedef单例作为成员变量

[英]typedef singleton as member variable

尝试访问下面的成员变量s,导致以下错误:

错误:“ cl :: s {aka单例}”不是“ cl”的基数

class singleton
{

public:
static singleton* getInstance()
{
  static singleton* ptr{nullptr};
  if(nullptr==ptr)
  {
    ptr=new singleton;
  }
  return ptr;
}
private:
  int m_var;
};

class cl
{
public:
   typedef singleton s;

};

int main() 
{
  cl* c;
  c->s::getInstance();
}

我没想到会有这样的错误。 我究竟做错了什么?

您无法通过实例访问类型名称。 写:

cl::s::getInstance();

C ++将c->s::getInstance()为试图在c指向的对象上调用s::getInstance 在基类上调用重写的(或隐藏的)成员函数或对从多个基类继承的成员函数进行歧义处理时,可以使用以下语法:

struct A { void foo(); };
struct B: A { void foo(); };
B b;
b.foo();     // calls B::foo
b.A::foo();  // calls A::foo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM