Можно ли создать массив переменных типов?Например,
int p1[]={1, 2, 3};
float p2[]={1.1, 2.2, 3.3};
double p3[]={...};
...
...
arr[0].ptr = p1;
arr[1].ptr = p2;
...
Сначала я попытался решить эту проблему с помощью enum, void * ptr и std :: same с шаблонами.Я сделал это, но выглядит очень грязно.Вот так.
enum dataType{...}
struct arr{
void *p
dataType datatype
}
template<typename T>
void insert(T x){
if(std::is_same<T, int*>) /* ... */
else if(std::is_same<T, float*>) /* ... */
...
}
void foo(int a, int b){
std::cout<<(TYPE_CHANGE_SOMEHOW)arr[a].ptr[b]<<std::endl;
}
// and much more
Так что я ищу другой способ.
- std :: tuple должен быть объявлен с определенными типами, поэтому я не могу их использовать.
- только с использованием void * не может работать с доступом к индексу