5

我遇到了这段代码。

class SomeClass::OtherClass : public BaseClass
{
  // stuff in here
}

SomeClass 是一个类,那么也许 OtherClass 是存在于 SomeClass 范围内的一个类?我只是从未见过它这样做。

那么,就是这个意思吗?

4

4 回答 4

11

也许 OtherClass 是存在于 SomeClass 范围内的类?

给自己打勾。这就是它的意思。

这用于OtherClass在内部声明后随后定义SomeClass

class SomeClass {
    class OtherClass;
    OtherClass* GetOtherClassInstance() { ...}
};
class SomeClass::OtherClass {
} 

如果内部类仅在外部类的上下文中有意义,则可以这样做。

class Vector {
  class Iterator;
  Iterator* GetStart();
};
class Vector::Iterator {
   details.
}

正如其他地方所提到的,pimpl 习惯用法是对具有延迟定义的内部类的出色使用。

于 2012-05-04T16:30:11.627 回答
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
};
于 2012-05-04T16:31:19.737 回答
0

一些类是基类的名称,另一些类是派生类,它链接派生类内部,冒号派生类后链接基类。在您的问题中,答案是提到了两个基类和一个派生类。

于 2013-07-14T11:00:36.390 回答
0

我认为SomeClassOtherClass所在的名称空间

class BaseClass {};
namespace SomeClass
{
    class OtherClass;
};

class SomeClass::OtherClass : public BaseClass
{
  // stuff in here
};
于 2012-05-04T16:31:12.403 回答