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

标签 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 库)。 谢谢。

最佳答案

c++11 有 std::tuple

你考虑过这个吗?

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

关于c++ - 如何使用模板编程创建多类型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30972216/

相关文章:

c++ - GNUMakefile 和 gcc : resolving the order of conflicting "-std=c++" requirements

c++ - Char* 输入检查它是十六进制还是十进制,并使用适当的错误处理和报告将其解析为无符号短整型

perl - 如何引用 Perl 中的数组切片?

c++ - 表示盘中时间的最佳方式是什么 HH :MM:SS in c++11

python - NumPy - 一维数组最快的惰性字典序比较

c++ - 检查两个数组是否相等

c++ - 我可以从 C 调用 std::function 吗?

C++ |语法错误 : Identifier 'i'

c++ - 使用 const 进行函数重载

c++ - 通过 C++ 发送查询