Я обновил фрагмент до более современного стиля C ++.
Определения структуры были перепутаны с объявлением экземпляров структуры.Вместо создания структуры, содержащей указатель, используется std :: vector.По возможности следует избегать использования указателя.
Вектор имеет несколько преимуществ, в том числе и с переменным размером.Инициализация вектора также проста.Если вектор имеет известный размер, тогда элемент at () может использоваться для доступа к конкретному элементу.
Оператор switch создает копию вектора, которая не является идеальной.Если бы вектор был очень большим, то использование ссылки на вектор было бы более эффективным.Для этого небольшого примера это не проблема.
#include <vector>
#include <iostream>
using sd_fmt = std::vector<double>;
sd_fmt data1 = {1,10,100,1000};
sd_fmt data2 = {2,200,2000, 20,20000};
int main(){
int choice = 1;
//initialize a blank struct with generic name 'sd'
sd_fmt sd;
switch((int) choice){
//Make a decision of which data set to use
case 1:
std::cout << "Using data1\n";
sd = data1;
break;
case 2:
std::cout << "Using data2\n";
sd = data2;
break;
}
//From here on do all my work with general variable name 'sd'
std::cout << sd.at(1); //Should show 10 in the console
return 0;
}