Given the following classes:
class Foo
{
struct BarBC
{
protected:
BarBC(uint32_t aKey)
: mKey(aKey)
mOtherKey(
You can't initialize members of a base class through a member initializer list, only direct and virtual base classes and non-static data members of the class itself.
Pass additional parameters to the base class' constructor instead:
struct BarBC {
BarBC(uint32_t aKey, uint32_t otherKey = 0)
: mKey(aKey), mOtherKey(otherKey)
{}
// ...
};
struct Bar : public BarBC {
Bar(uint32_t aKey, uint32_t aOtherKey)
: BarBC(aKey, aOtherKey)
{}
};
You can't do this as BarBC constructs the mOtherKey - you can't override it.
You have either assign new value:
Bar(...) : ...
{ mOtherKey=aOtherKey; }
Or create additional BarBC constructor that has a parameter of mOtherKey