有两个类foo和bar,bar为foo服务我希望设计成foo 与 foo::bar , 而不是 foo 与 bar
类似std::vector<int>::iterator 和 std::vector
应该怎样把bar的class放在foo里面?
业精于勤,荒于嬉;行成于思,毁于随。
可以使用類嵌套或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;
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的巢狀類別。
std::vector<int>::iterator
std::vector
typedef
可以使用類嵌套或typedef,你說的這種 vector::iterator 是用的typedef定義的類型別名
C++ 支援巢狀類別(nested class),例如
或
具體使用方法請參考 C++ Primer 5ed. section 19.5 Nested Classes。
另外
std::vector<int>::iterator
是另一個類別在std::vector
中的別名(typedef
),並不是std::vector
的巢狀類別。