如何在给定包含类的实例的情况下实例化嵌套类

时间:2014-01-02 19:45:46

标签: c++ types instance nested-class

是否可以做这样的事情:

class BaseClass
{
public:
    class NestedClass
    {
    };
};

BaseClass foo;
foo.NestedClass bar;

如何从实例中获取类型?

2 个答案:

答案 0 :(得分:4)

您需要做的是:

BaseClass::NestedClass bar;

您无法避免使用范围解析运算符,但您可以在适当的范围内将typedef作为速记:

typedef BaseCLass::NestedClass NestedClass;

编辑: 根据问题的变化,如果你想要实例中的类型,在c ++ 11中你可以使用decltype

decltype(foo)::NestedClass;

但这没有意义,因为decltype会在此实例中返回BaseClass。

答案 1 :(得分:0)

您使用范围解析运算符和基类名称:

BaseClass::NestedClass bar;