搜尋

首頁  >  問答  >  主體

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

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

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

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

迷茫迷茫2803 天前337

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑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;

    回覆
    0
  • 天蓬老师

    天蓬老师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的巢狀類別。

    回覆
    0
  • 取消回覆