検索

ホームページ  >  に質問  >  本文

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

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

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

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

迷茫迷茫2803日前338

全員に返信(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
  • キャンセル返事