2017-02-18 3 views
-3

私はC++には新しく、C++のエクササイズブックを見ていたので、クラスを使用する必要があるという面白い問題が見つかりました。私はそれに解決策を見つけましたが、私の解決策はJavascriptで書いているように書かれています。だから私はC + +でそれを書いて始めたが、私はそれが可能かどうか、もしそうなら、同じクラスのメンバー関数内で別のクラスのオブジェクトとしてクラスのメンバーを作成する方法を知りません.Javascriptでは、クラスメンバーを別のメンバーの中に動的に追加する

function AConstructor() { 
    this.method = function() { 
    this.property = new OtherConstructor() 
    } 
    } 

これはC++で可能ですか?

+3

短い答えは:いいえ。 C++はこのように動作しません。 –

+0

おそらく、 'std :: map >'をエミュレートするデータメンバとして使うことができます。 – skypjack

+0

この機能を実現するために使用できるトリックやハックがあるかもしれません。 –

答えて

0

はい、実際の方法ではありません。std::function<void()>は、オーバーロードされた()演算子のオブジェクトです。 Btwはthisがポインタであることを覚えておいてください。->の会員トラフには.オペレータではなく、アクセスするための参照ではありません。

#include <iostream> 
#include <functional> 

class C { 
private: 
    std::function<void()> default_method = []() { std::cout << "X"; }; 

public: 
    std::function<void()> method = default_method; 

    void change_method() { 
     method = []() { std::cout << "Y"; }; 
    } 
}; 

int main() { 
    C object; 
    object.method(); 
    object.change_method(); 
    object.method(); 

    return 0; 
} 

XYが印刷されます。

関連する問題