是否可以做这样的事情:
class BaseClass
{
public:
class NestedClass
{
};
};
BaseClass foo;
foo.NestedClass bar;
如何从实例中获取类型?
您需要做的是:
BaseClass::NestedClass bar;
您无法避免使用范围解析运算符,但可以在适当的范围内将typedef
作为简写:
typedef BaseCLass::NestedClass NestedClass;
编辑:根据所讨论的更改,如果您希望实例中的类型,在 c++11 中您可以使用 decltype
:
decltype(foo)::NestedClass;
但这毫无意义,因为在这种情况下decltype
会返回 BaseClass。
使用范围解析运算符以及基类名称:
BaseClass::NestedClass bar;