假设我有4个不同指针类型的4个数组。 我想要一个模板函数,它将它的参数存储在正确的数组中。像这样的东西
int* arr_int[10];
double* arr_double[10];
uint64_t* arr_uint64_t[10];
template <typename T>
void add_value (int pos, T value) {
//i want to store value in the array of it's type
arr_##(*T)[pos]=value;
//of course, this does not work :)
}
int main(int argc, char *argv[])
{
int a = 2;
double b = 4.2;
uint64_t c = 123456;
add_value(0,&a);
add_value(0,&b);
add_value(0,&c);
//add more values
//do something with arrays
....
return 0;
}
有可能吗?
答案 0 :(得分:2)
不可以通过模板以您的方式生成名称。您可以像Nick所说的那样 - 只需创建重载函数,或者使用指定类型的静态数组创建模板类:
template <typename T>
struct array_holder
{
static T * arr[10];
};
template <typename T>
T * array_holder<T>::arr[10];
template <typename T>
void add_value (int pos, T value)
{
array_holder<T>::arr[pos] = something_you_need;
}