在 C++ 中从外部访问嵌套的 class

Accsess nested class from outside in C++

您好,我想访问来自其他 class 的嵌套 class。

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

class Other
{
    InSideClass x; // This doesn't work
};

class InSideClass 是一个public class 所以我不明白为什么我可以从外部访问它

我也想访问

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

        };
    };


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


};

classInSideClassOutSideClass里面,所以你要这样指定。

class Other
{
    OutSideClass::InSideClass x; // This should work
};

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

另外 typename 似乎需要根据这些:

  • c++ - dependent scope; need typename in front; - Stack Overflow

  • c++ - Where and why do I have to put the "template" and "typename" keywords? - Stack Overflow

      class Other
      {
      typename InSideClass::InSideClassIterator x;
      };