Можно объявить внутренний / вложенный класс, производный от включающего класса.но вы не можете определить свой вложенный класс одновременно.например, если вы попытаетесь скомпилировать этот код, он выдаст недопустимое использование неполного типа COuter.
class COuter
{
class CInnner : COuter
{
}
}
но если вы просто объявите свой класс и отложите определение внутреннего класса, это сработает, потому что тогда определение класса Couter будет завершено.Другими словами, вы не можете использовать тип, если он полностью не определен.
Как сказал Джон Калсбек, будет работать следующая строка кода.
class COuter
{
class CInner;
};
class COuter::CInner : public COuter
{
};
Эта тема также обсуждается здесь дляссылка. Может ли вложенный класс C ++ наследовать включающий его класс? .