2017-02-18 76 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()>是一個運算符超載的對象。順便說一句,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

相關問題