我遇到了这段代码。
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
}
SomeClass 是一个类,那么也许 OtherClass 是存在于 SomeClass 范围内的一个类?我只是从未见过它这样做。
那么,就是这个意思吗?
我遇到了这段代码。
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
}
SomeClass 是一个类,那么也许 OtherClass 是存在于 SomeClass 范围内的一个类?我只是从未见过它这样做。
那么,就是这个意思吗?
也许 OtherClass 是存在于 SomeClass 范围内的类?
给自己打勾。这就是它的意思。
这用于OtherClass
在内部声明后随后定义SomeClass
:
class SomeClass {
class OtherClass;
OtherClass* GetOtherClassInstance() { ...}
};
class SomeClass::OtherClass {
}
如果内部类仅在外部类的上下文中有意义,则可以这样做。
class Vector {
class Iterator;
Iterator* GetStart();
};
class Vector::Iterator {
details.
}
正如其他地方所提到的,pimpl 习惯用法是对具有延迟定义的内部类的出色使用。
这意味着OtherClass 是SomeClass 的内部类。最好已经在那里宣布了。适用于 pimpl 成语:
struct my_object {
...
private:
struct my_impl;
my_impl * pimpl;
};
// in a cpp file...
struct my_object::my_impl {
...implementation details of my_object
};
一些类是基类的名称,另一些类是派生类,它链接派生类内部,冒号派生类后链接基类。在您的问题中,答案是提到了两个基类和一个派生类。
我认为SomeClass
是OtherClass
所在的名称空间
class BaseClass {};
namespace SomeClass
{
class OtherClass;
};
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
};