Невозможно переслать объявление вложенного класса, не указав полностью содержащий класс. Этот маленький трюк как бы решает проблему, хотя
class Outer_Inner
{
};
class Outer
{
public:
typedef Outer_Inner Inner;
};
Это работает для меня, как в моем соглашении об именах Outer_Inner
не является допустимым именем класса, поэтому очевидно, что оно относится к вложенному классу.
Вы все еще не можете объявить вложенный класс следующим образом:
class Outer::Inner;
Но, по крайней мере, он может быть объявлен следующим образом:
class Outer_Inner;
Если вам не нравится, как выглядит Outer_Inner, вы можете принять соглашение об именах для вложенных классов, которое лучше соответствует вашим вкусам. Outer__Inner
, Outer_nested_Inner
и т. Д.