Даны следующие классы:
class Foo
{
struct BarBC
{
protected:
BarBC(uint32_t aKey)
: mKey(aKey)
mOtherKey(0)
public:
const uint32_t mKey;
const uint32_t mOtherKey;
};
struct Bar : public BarBC
{
Bar(uint32_t aKey, uint32_t aOtherKey)
: BarBC(aKey),
mOtherKey(aOtherKey) // Compile error here
};
};
Я получаю ошибку компиляции в указанной точке:
error: class `Foo::Bar' does not have any field named `mOtherKey'.
Может кто-нибудь объяснить это? Я подозреваю, что это синтаксическая проблема из-за того, что мой класс Bar
определен в классе Foo
, но, похоже, не могу обойти его.
Это простое публичное наследование, поэтому mOtherKey
должен быть доступен из конструктора Bar
. Верно? * * 1013
Или это как-то связано с тем, что mOtherKey
является константой, и я уже инициализировал его как 0
в конструкторе BarBC
?