switch
- case
문에 변수 선언 문제는 this SO post에 잘 설명되어 있으며 대부분의 측면에 대한 답변이 포함되어 있습니다. 그러나 나는 견고한 이유를 찾을 수 없다는 문제에 직면했다. 누군가이 코드를 잘못 설명 할 수 있습니까?switch case 문에서 변수 선언
switch (var)
{
case 0:
int test;
test = 0; // no error
int test2 = 0; // ERROR: initialization of 'test2' is skipped by 'case' label
std::string str;
str = "test"; // ERROR: initialization of 'str' is skipped by 'case' label
break;
case 1:;
break;
}
6 번째 줄의 오류가 발생하는 이유는 알고 있습니다. 그러나 다음 두 줄은 무엇이 잘못 되었습니까? 네이티브 타입과 클래스 타입의 차이와 관련이 있을지 모르지만, 확실하지 않습니다.
이것은 중복 질문이 아닙니다 Why can't variables be declared in a switch statement?! 나는 원래 것에 대한 링크를 제공했다. 두 가지 질문을 읽고 차이점을 확인하십시오. AFAIK 문제는 원래 질문에서 논의되지 않았습니다.
클래스의 생성자에 코드가 없으면 코드에서 오류가 발생하지 않는다고 결론 내릴 수 있습니까? –
@polfosol 정확하게 말하면, 기본 생성자와 소멸자는 "사소한 것"일 필요가 있습니다. http://en.cppreference.com/w/cpp/language/destructor#Trivial_destructor 및 http://en.cppreference.com/w/cpp/language/default_constructor#Trivial_default_constructor를 참조하십시오. – Brian