问题描述
有两个类foo和bar,bar为foo服务我希望设计成foo 与 foo::bar , 而不是 foo 与 bar
类似std::vector<int>::iterator 和 std::vector
应该怎样把bar的class放在foo里面?
问题解答
回答1:可以使用类嵌套或者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;回答2:
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的嵌套类。