我遇到了这段代码。
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
}
SomeClass是一个类,所以也许OtherClass是一个存在于SomeClass范围内的类?我从来没有见过这样做过。
那么,这是什么意思?
答案 0 :(得分:11)
也许OtherClass是一个存在于SomeClass范围内的类?
给自己勾选标记。这就是它的意思。
用于随后在OtherClass
内声明SomeClass
之后定义class SomeClass {
class OtherClass;
OtherClass* GetOtherClassInstance() { ...}
};
class SomeClass::OtherClass {
}
:
class Vector {
class Iterator;
Iterator* GetStart();
};
class Vector::Iterator {
details.
}
如果内部类只在外部类的上下文中有意义,那么可以这样做。
{{1}}
正如其他地方所提到的,pimpl习语是对具有延迟定义的内部类的极好用法。
答案 1 :(得分:3)
这意味着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
};
答案 2 :(得分:0)
我认为SomeClass
是OtherClass
所在的名称空间
class BaseClass {};
namespace SomeClass
{
class OtherClass;
};
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
};
答案 3 :(得分:0)
某些类是基类的名称,而其他类是派生类,它链接派生类的内部和冒号派生类之后链接基类。 在你的问题中,答案是两个基类,并提到一个派生类。