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)
类InSideClass是 inside OutSideClass,所以你必须指定。
class Other
{
OutSideClass::InSideClass x; // This should work
};
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,声明在 inside 中OutSideClass,因此您应该OutSideClass<T>::从声明中删除。
也typename似乎根据这些要求:
c ++ - 我必须将“模板”和“类型名”关键字放在哪里以及为什么要放?- 堆栈溢出
class Other
{
typename InSideClass::InSideClassIterator x;
};
Run Code Online (Sandbox Code Playgroud)