c++でのクラス拡張（カテゴリ）


c++で既存のクラスを継承せず、メソッドを追加する方法はありますか？

cocos2d-xでゲームを作っているのですが、Nodeなどの既存クラスにメソッドを追加したいと思っています。  
また、１つの実装ファイルが長くなるのを防ぐために、実装ファイルを複数に分割したいです。

objective-cではカテゴリの機能を使って、それらのことができたのですが、cocos2d-x(c++)で上記のようなことは可能でしょうか。




> c++で既存のクラスを継承せず、メソッドを追加する方法はありますか？

残念ながら、ありません。新しいメンバ関数（メソッド）を追加するには、クラスの継承が必要です。

> また、１つの実装ファイルが長くなるのを防ぐために、実装ファイルを複数に分割したいです。

通常の分割コンパイル＆リンクと同様です。あるヘッダファイルで宣言したクラスに対して、関数単位での実装ファイル(cpp)分割が可能です。

[code]

    // foo.h
    class FooClass {
      void memberFunc1();
      void memberFunc2();
    };
    
[/code]

[code]

    // foo_1.cpp
    void FooClass::memberFunc1() {
      /* 実装 */
    }
    
[/code]

[code]

    // foo_2.cpp
    void FooClass::memberFunc2() {
      /* 実装 */
    }
    
[/code]




> c++で既存のクラスを継承せず、メソッドを追加する方法はありますか？

残念ながら、ありません。新しいメンバ関数（メソッド）を追加するには、クラスの継承が必要です。

> また、１つの実装ファイルが長くなるのを防ぐために、実装ファイルを複数に分割したいです。

通常の分割コンパイル＆リンクと同様です。あるヘッダファイルで宣言したクラスに対して、関数単位での実装ファイル(cpp)分割が可能です。

[code]

    // foo.h
    class FooClass {
      void memberFunc1();
      void memberFunc2();
    };
    
[/code]

[code]

    // foo_1.cpp
    void FooClass::memberFunc1() {
      /* 実装 */
    }
    
[/code]

[code]

    // foo_2.cpp
    void FooClass::memberFunc2() {
      /* 実装 */
    }
    
[/code]

