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

这样就完全没有问题~