如何使用模板编程创建多类型数组

时间:2015-06-22 04:40:02

标签: c++ arrays c++11 visual-c++ c++14

我们可以使用void *或void **创建一个多类型数组, 举个例子 - (在" C编程中也用C ++编程")

    #define ARRAY_LENGTH 47
    void *ptr;
    void **arr = malloc(sizeof(void *) * ARRAY_LENGTH);
    for (int i = 0; i < ARRAY_LENGTH; i++) {
    arr[i] = ptr;
}
free(arr);

因此,我们可以将任何指针类型转换为void *类型并在void **中存储地址,并将其从数组中转换回来以适当地使用它们。 同样明智的是,在现代C ++中,我们是否有任何优雅的方法来创建这样一个数组,用于使用模板编程存储多类型(指针)? 请提供简单的示例(不使用boost库)。 谢谢。

1 个答案:

答案 0 :(得分:0)

c ++ 11有std::tuple

你考虑过这个吗?

A. Alexandrescu撰写的“现代C ++设计”讨论了第3章中的类型列表。也许这会很有用。