有两个类foo和bar,bar为foo服务
我希望设计成
foo 与 foo::bar , 而不是 foo 与 bar
类似
std::vector<int>::iterator 和 std::vector
应该怎样把bar的class放在foo里面?
巴扎黑2017-04-17 13:28:19
可以使用類嵌套或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;
天蓬老师2017-04-17 13:28:19
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
的巢狀類別。