在 C++ 中从外部访问嵌套类

use*_*453 0 c++ nested class inner-classes

您好,我想从其他类访问嵌套类。

class OutSideClass
{
public:
    class InSideClass
    {
       ...
    };
    friend class InSideClass;
};

class Other
{
    InSideClass x; // This doesn't work
};
Run Code Online (Sandbox Code Playgroud)

InSideClass 类是一个公共类,所以我不明白为什么我可以从外部访问它

我也想访问

template <typename T>
class OutSideClass
{
public:
    class InSideClass
    {
        class InSideClassIterator
        {

        };
    };


public:
    class Other
    {
    OutSideClass<T>::InSideClass::InSideClassIterator x;
    };


};
Run Code Online (Sandbox Code Playgroud)

Mik*_*CAT 6

InSideClass是 inside OutSideClass,所以你必须指定。

class Other
{
    OutSideClass::InSideClass x; // This should work
};
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,声明在 inside 中OutSideClass,因此您应该OutSideClass<T>::从声明中删除。

typename似乎根据这些要求: