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;
}
这样就完全没有问题~