При попытке принять тип предка в качестве параметра в конструкторе g ++, похоже, принимает тип за несуществующий конструктор по умолчанию.Что здесь происходит, и есть ли исправление?
Минимальный пример:
class Outer
{
};
class Middle : Outer
{
public:
Middle(int i):i(i){}
protected:
int i;
};
class Inner : Middle
{
public:
Inner(int i, Outer *o):Middle(i){}
};
g ++ Вывод:
example.h:16:18: error: ‘class Outer Outer::Outer’ is inaccessible within this context
Inner(int i, Outer *o):Middle(i){}
^~~~~
example.h:2:1: note: declared here
{
^