基本上我想要MyClass持有一個Hashmap,它將字段名稱(字符串)映射到任何類型的 值。爲此,我編寫了一個單獨的MyField類,其類型爲&價值信息..C++ std :: map保存任何類型的值
這是我到目前爲止有:
template <typename T>
class MyField {
T m_Value;
int m_Size;
}
struct MyClass {
std::map<string, MyField> fields; //ERROR!!!
}
但你可以看到,地圖聲明失敗了,因爲我沒有爲MyField的類型參數...
所以我想它必須是某種東西像
std::map< string, MyField<int> > fields;
或
std::map< string, MyField<double> > fields;
但顯然這破壞了我的整個目的,因爲宣告地圖只能容納特定類型的MyField的..我想一個地圖,可容納任何類型的MyField分類..
有什麼辦法可以實現這個..?
你需要某種類型的擦除。我建議'boost :: any'。 – chris
你可以使用'std :: map>'。 –
@sharth你有什麼理由不用簡單的(void *)來使用shared_ptr? –
user3794186