我要存儲載體或類似載體這樣的結構不同類型的性病對象::矢量或其它數據結構
template <typename var_type> struct
{
int some_var;
//...some antoher vars
var_type problem_var;
};
,我該怎麼辦呢?我無法使用模板內容創建矢量
我要存儲載體或類似載體這樣的結構不同類型的性病對象::矢量或其它數據結構
template <typename var_type> struct
{
int some_var;
//...some antoher vars
var_type problem_var;
};
,我該怎麼辦呢?我無法使用模板內容創建矢量
您可以使用類似Boost.Any之類的東西。
史蒂夫,謝謝,但我不能使用它,因爲可能不僅有浮動 – 2012-01-06 12:17:23
阿爾奇,謝謝,我認爲這是我需要的! – 2012-01-06 12:21:03
難道你不能用你需要存儲的對象的類型來創建一個類層次結構,並且在插入到向量中時始終向基類上傳嗎?
缺點是,當你從向量中提取項目或使用基類接口(可能是一個getter方法)時,你總是需要知道什麼類型需要向下轉換。
如果您事先知道類型列表,boost::variant<>
可能比boost::any
更合適。在你的情況下,你可能需要
typedef boost:variant<
mystruct<float>,
mystruct<int>
mystruct<std::string>
> my_variant;
這將只允許這3種類型。或者,您可能需要mystruct<boost:variant<float, int, std::string> >
,這在表面上相似。我不能從你的問題來判斷哪一個最適合你的問題。
「我無法使用模板內容創建矢量」 - 爲什麼不?如果你命名你的結構,會發生什麼,然後寫'std :: vector>'? (用你給你結構體的名稱替換'mystruct',用你想使用的模板參數來'float')。 –
2012-01-06 12:15:10
@SteveJessop:我想他想說的是他想要一個不同種類的容器。 – PlasmaHH 2012-01-06 12:20:42
也許是我,但問題不是非常清楚。你能解釋一下你想達到什麼嗎? – 2012-01-06 12:23:17