首页 > 如何设计将一个类放在另一个类名下

如何设计将一个类放在另一个类名下

有两个类foo和bar,bar为foo服务
我希望设计成
foo 与 foo::bar , 而不是 foo 与 bar

类似
std::vector<int>::iterator 和 std::vector

应该怎样把bar的class放在foo里面?


C++ 支持嵌套类(nested class),例如

class foo {
    class bar { /* ... */ };
    /* ... */
};

class foo {
    class bar;
    /* ... */
};

class foo::bar {
    /* ... */
};

具体使用方法请参考 C++ Primer 5ed. section 19.5 Nested Classes。

另外std::vector<int>::iterator是另外一个类在std::vector中的别名(typedef),并不是std::vector的嵌套类。


可以使用类嵌套或者typedef,你说的这种 vector::iterator 是用的typedef定义的类型别名

class Out {
public:
    class Inside {
    
    };
};

Out some1;
Out::Inside some2;
class A {

};

class B {
public:
    typedef A Inside;
};

A some1;
B some2;
B::Inside some3;
【热门文章】
【热门文章】