I am getting the following error in C++:
error C2614: ‘ChildClass’ : illegal member initialization: ‘var1’ is
not a base or member
Class Base
{
protected:
int var1;
public:
Base()
{
var1=0;
}
}
class Child : public Base
{
int chld;
public:
Child() : var1(0)
{
chld=1;
}
}
I feel what I have done is as per OO protocol.
Here var1 is a data member of Base class with protected as the access specifier. So It can be inherited and it would become private in child.
Don’t understand why am I getting the error?
It doesn’t work for the exact reason the error message provides you: you can only use initializer lists with direct members or base classes.
In your case, you don’t even need to initialize
var1, sinceBase::Base()will be called byChild‘s constructor, which will setvar1to0.If you want a different value, you’ll have to overload
Baseconstructor and call it explicitly: