c/c++ error C2614: illegal member initialization: is not a base or member

这个错误是因为在初始化列表中初始化了非成员函数或者非基类

错误示例:

class A
{
protected:
int size;
}

class B: public A 
{
B(const A& a): ok(0), size(a)
{
    // error, 因为初始化了 size
    // size 是 a的成员函数,虽然被B所继承,但是仍然不能在初始化列表中初始化。
}
private :
int ok;
}

改成:

class A
{
protected:
int size;
}

class B: public A 
{
B(const A& a): ok(0)
{
    // success
    size = a.size;
}
private :
int ok;
}

这样就完全没有问题~

  • 本文作者: 帐前卒
  • 本文链接: http://chillyc.info/2012/7857627/
  • 版权声明: 本博客所有文章除特别声明外,只能复制超链接地址,且必须注明出处!