模板:从类型名称中获取适当的变量名称

时间:2014-03-10 08:57:20

标签: c++ templates

假设我有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;
} 

有可能吗?

1 个答案:

答案 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;
}