Розглянемо такий код:
#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 ++ скаржиться crosses initialization of 'int r'
. Мої запитання:
- Що це таке
crosses initialization
? - Чому перший ініціалізатор
x + y
проходить компіляцію, а другий не вдався? - Які проблеми так званих
crosses initialization
?
Я знаю, що мені слід використовувати дужки, щоб вказати область дії r
, але я хочу знати, чому, наприклад, чому не-POD не може бути визначений у багатовипадковому операторі перемикання.