是否可以做这样的事情:
class BaseClass
{
public:
class NestedClass
{
};
};
BaseClass foo;
foo.NestedClass bar;
如何从实例中获取类型?
答案 0 :(得分:4)
您需要做的是:
BaseClass::NestedClass bar;
您无法避免使用范围解析运算符,但您可以在适当的范围内将typedef
作为速记:
typedef BaseCLass::NestedClass NestedClass;
编辑:
根据问题的变化,如果你想要实例中的类型,在c ++ 11中你可以使用decltype
:
decltype(foo)::NestedClass;
但这没有意义,因为decltype
会在此实例中返回BaseClass。
答案 1 :(得分:0)
您使用范围解析运算符和基类名称:
BaseClass::NestedClass bar;