在 class 之外声明一个嵌套的 class?

Declaring a nested class outside of the class it's within?

我有一个 class,它的声明对于单个头文件来说过于臃肿。我在其中嵌套 classes 和结构以加强它们之间的关系,所以我想将它们放在一起(在某种意义上我必须使用最外面的 class 的命名空间来使用 class在)

有没有办法从另一个头文件中声明嵌套的 classes?或者至少在另一个头文件中声明嵌套 class 的方法? (many methods per class 是膨胀的原因,classes的数量在10个比较合理)

结构看起来有点像这样:

class Stage{
    class Quad{
        Quad();
        Quad(int width, int height);
        // like 20 different constructors, plus methods
    private: 
        glm::vec3 p[4];
    };
    class Line{
         // ...
    };
    // and a bunch of other classes

    // Stage methods
    void draw(Quad quad);
    void draw(Line line);
    // ...
};

我应该补充一点,我不能用预处理器内联扩展它们,因为如果我有创意的话,那会弄乱我的 IDE 的代码完成。

Is there a way to declare nested classes from another header file?

不,嵌套的 classes 只能在它们周围的 class 定义中声明。

Or perhaps at least declare the methods of the nested class in another header file?

是的,您可以只在 class 中声明嵌套的 classes,然后再定义它们。

class Stage{
    class Quad;
    class Line;
    // and a bunch of other classes

    // Stage methods
    void draw(Quad quad);
    void draw(Line line);
    // ...
};

// ... later
class Stage::Quad {
    // stuff
};

// ... later still
class Stage::Line {
    // whatever
};