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

来源:互联网 发布:任盈盈 知乎 编辑:程序博客网 时间:2024/06/05 18:57

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

错误示例:

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;}

这样就完全没有问题~