Considera il codice seguente:
#include <iostream>
using namespace std;
int main()
{
int x, y, i;
cin >> x >> y >> i;
switch(i) {
case 1:
// int r = x + y; -- OK
int r = 1; // Failed to Compile
cout << r;
break;
case 2:
r = x - y;
cout << r;
break;
};
}
G ++ si lamenta crosses initialization of 'int r'
. Le mie domande sono:
- Che cos'è
crosses initialization
? - Perché il primo inizializzatore
x + y
supera la compilazione, ma il secondo non è riuscito? - Quali sono i problemi dei cosiddetti
crosses initialization
?
So che dovrei usare le parentesi per specificare l'ambito di r
, ma voglio sapere perché, ad esempio perché non è stato possibile definire non POD in un'istruzione switch multi-case.