我有一個模板化的C++類,它作用於容器。在類實現中,我需要訪問容器包含的數據類型。我目前定義這樣的:模板類來管理容器,獲取包含數據的類型
template <typename ContainerType, typename DataType>
class MyClass {
DataType a;
DataType foo(DataVector& vec, DataType s);
};
當我實例化它,我將它實例化這樣
MyClass< vector<float>, float > c1;
MyClass< CustomVector<double>, double > c2;
MyClass< Lib::ContainerFloat, Lib::Float > c3;
這工作,但有沒有這樣做,而不用複製的類型信息的一種方式(即浮動,雙等)?即使用一些類似decltype的魔法來獲取包含的數據類型。所以我想能夠與實例:
MyClass< vector<float> > c1;
MyClass< CustomVector<double> > c2;
MyClass<Lib::ContainerFloat> c3;
,並聲明類:
template <typename ContainerType>
class MyClass {
// get DataType automatically from ContainerType
DataType a;
DataType foo(DataVector& vec, DataType s);
};
不明白你的問題。你可以寫'DataType var = vector [0];',不是嗎? – songyuanyao
我的問題是我如何避免重複有關數據類型的信息。即不是聲明它,而是從容器中提取,因爲它在編譯時已知。我編輯我的問題更清楚。 – memo