Вы упомянули это не удалось в операторе switch. Вам нужно будет завернуть его в дополнительную пару скобок:
int type = UNKNOWN;
switch(type)
{
case UNKNOWN:
cout << "try again" << endl;
break;
case KNOWN:
{ // Note the extra braces here...
struct sName
{
vector<int> x;
} myVector;
} // and here
}
В качестве альтернативы, вы могли уже объявить структуру и просто пытаться объявить и инициализировать локальную переменную. Это не проблема, уникальная для struct
, это случится каждый раз, когда вы пытаетесь инициализировать переменную внутри случая:
struct sName
{
vector<int> x;
};
int type = UNKNOWN;
switch(type)
{
case UNKNOWN:
cout << "try again" << endl;
break;
case KNOWN:
{ // Note the extra braces here...
sName myVector;
} // and here
case OTHER:
int invalid = 0; // this will also fail without the extra pair of braces
break;
}