Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从C+;中的外部访问嵌套类+;_C++_Class_Nested_Inner Classes - Fatal编程技术网

C++ 从C+;中的外部访问嵌套类+;

C++ 从C+;中的外部访问嵌套类+;,c++,class,nested,inner-classes,C++,Class,Nested,Inner Classes,您好,我想从其他类访问嵌套类 class OutSideClass { public: class InSideClass { ... }; friend class InSideClass; }; class Other { InSideClass x; // This doesn't work }; InSideClass是一个公共类,所以我不明白为什么我可以从外部访问它 我还想访问 template <typename T&g

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

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

class Other
{
    InSideClass x; // This doesn't work
};
InSideClass是一个公共类,所以我不明白为什么我可以从外部访问它

我还想访问

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

        };
    };


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


};
模板
类外类
{
公众:
类内部类
{
类内累加器
{
};
};
公众:
其他类
{
外部类::内部类::内部类计算器x;
};
};

内部类
在类的内部
外部类
,因此您必须指定它

class Other
{
    OutSideClass::InSideClass x; // This should work
};
在第二种情况下,声明位于
OutSideClass
内部,因此您应该从声明中删除
OutSideClass::

根据以下要求,似乎还需要
typename


请检查您的问题中是否遗漏了“否”…
OutSideClass::InSideClass x应该有效。您能解释一下当OutSideClass有模板时我应该怎么做吗。例如
模板类OutSideClass
@user75453
OutSideClass::InSideClass x<代码>某些东西
应该是你想要的
int
。我已经编辑了我的问题,你能解释一下如何访问它吗。看来那样的话就没有了works@user75453为
OutSideClass
添加模板参数,就像我之前的回答一样。@user75453在这种情况下,声明在
OutSideClass
内,因此
OutSideClass::
应该被删除。
  class Other
  {
  typename InSideClass::InSideClassIterator x;
  };