在 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;
};
};
classInSideClass
在OutSideClass
里面,所以你要这样指定。
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;
};
您好,我想访问来自其他 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;
};
};
classInSideClass
在OutSideClass
里面,所以你要这样指定。
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; };