對不起混淆標題。我不知道該怎麼說。示例應該自行解釋。使用模板的C++成員函數模板
我發現一種叫做typemaps,並用它來我的代碼是這樣的:
template<typename T>
struct typemap
{
static const int INDEX;
};
template<>
const int typemap<Type1>::INDEX = 1;
template<>
const int typemap<Type2>::INDEX = 3;
template<>
const int typemap<Type3>::INDEX = 11;
類型1類型2 &的Type3是stucts和這裏一樣使用類型。 INDEX編號不能位於結構體內,因爲可能存在另一個具有不同編號但具有相同類型對象的類型映射表。因此,typemap適用於向量之類的集合中不同的順序,因爲順序對我很重要。
接下來的事情是非模板類,它有Type1-3作爲屬性。我想要做的是將這些屬性插入到vector中,這是在std :: function的幫助下完成的。但我需要採用通用的類型映射並將其用作插入向量的索引。
我認爲它可能工作的唯一的事情是使用更多的模板。就像下一個代碼,但這是不正確的方式,因爲我仍然是新的模板,我需要幫助正確地寫它,所以函數的主體toVector 開始工作,因爲我需要。
class MyClass
{
Type1 type1_;
Type2 type2_;
Type3 type3_;
..
template<typename T>
void toVector(T& typemap)
{
std::vector<..> vect;
vect.resize(..);
vect[typemap<Type1>::INDEX] = type1_.someFunction(..);
vect[typemap<Type2>::INDEX] = type2_.someFunction(..);
}
};
我敢肯定,我使用的模板不對的成員函數,我莫名其妙地需要說T參數也有一些模板參數。對不起,我的英語不是母語。對於「..」也很抱歉,這與我的問題無關,它會混淆代碼。
您正在尋找[模板模板參數](http://en.cppreference.com/w/cpp/language/template_parameters#Template_template_parameter)。 – Quentin
當人們擺脫命名常量UPPERCASE的壞習慣時? – Slava
@Slava爲什麼這是一個壞習慣? – CppChris