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

浏览:23日期:2023-05-17

问题描述

有两个类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的嵌套类。

相关文章: