C++ 如何使用模板编程创建多类型数组
我们可以使用void*或void**创建多类型数组, 例如— (C编程中也有C++编程)C++ 如何使用模板编程创建多类型数组,c++,arrays,c++11,visual-c++,c++14,C++,Arrays,C++11,Visual C++,C++14,我们可以使用void*或void**创建多类型数组, 例如— (C编程中也有C++编程) #定义数组长度47 无效*ptr; void**arr=malloc(sizeof(void*)*数组长度); for(int i=0;i
#定义数组长度47
无效*ptr;
void**arr=malloc(sizeof(void*)*数组长度);
for(int i=0;i
因此,我们可以将任何指针类型强制转换为void*类型,并将地址存储在void**中,然后将其从数组中强制转换回来,以适当地使用它们。
与明智一样,在现代C++中,我们是否有任何优雅的方法来创建这样一个数组,用于使用模板编程存储多类型(指针)?
请提供简单的示例(不使用boost库)。
谢谢。c++11具有
std::tuple
你考虑过这个吗
A. Alexandrescu的《现代C++设计》第3章讨论了类型化。也许这会有用。c++11具有
std::tuple
你考虑过这个吗
A. Alexandrescu的《现代C++设计》第3章讨论了类型化。也许这会有用。
boost::variant
<代码>增压::是否有boost::type_erasure::any
?boost::any
合适。没有boost?如果我们想做自己的实现?如果它已经在高质量的库中实现了,您为什么要推出自己的呢?或者这恰好是一个学习练习?是的,我真的很想学习如何使用模板类型推断来实现这些东西<代码>增压::是否有boost::type_erasure::any
?boost::any
合适。没有boost?如果我们想做自己的实现?如果它已经在高质量的库中实现了,您为什么要推出自己的呢?或者这是一个学习练习吗?是的,我真的很想知道这些东西是如何用模板类型推断实现的/
#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);