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

这样就完全没有问题~


你可能感兴趣的:(c,Class,initialization)