在类之外声明一个嵌套类?

时间:2015-02-26 02:33:38

标签: c++ class nested-class

我有一个类,其声明对于单个头文件而言过于膨胀。我在其中嵌入类和结构以加强它们之间的关系,所以我想将它们保持在一起(在某种意义上我必须使用最外层的类命名空间来使用它们中的类)

有没有办法从另一个头文件声明嵌套类?或者至少在另一个头文件中声明嵌套类的方法? (每个类的许多方法都是膨胀的原因,类的数量在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代码。

1 个答案:

答案 0 :(得分:1)

  

有没有办法从另一个头文件声明嵌套类?

不,嵌套类只能在其周围的类定义中声明。

  

或者至少在另一个头文件中声明嵌套类的方法?

是的,您可以在其类中声明嵌套类,然后在以后定义它们。

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
};