컴파일러 오류 C3446
'class': 기본 멤버 이니셜라이저는 값 클래스의 멤버에 대해 허용되지 않습니다.
Visual Studio 2015 이하에서는 컴파일러가 값 클래스 멤버에 대한 기본 멤버 이니셜라이저를 허용하지만 무시했습니다. 값 클래스의 기본 초기화는 항상 멤버를 0으로 초기화하고 기본 생성자는 허용되지 않습니다. Visual Studio 2017에서는 기본 멤버 이니셜라이저가 이 예제에 표시된 대로 컴파일러 오류를 발생시킵니다.
예시
다음 샘플에서는 Visual Studio 2017 이상에서 C3446을 생성합니다.
// C3446.cpp
value struct V
{
int i = 0; // error C3446: 'V::i': a default member initializer
// is not allowed for a member of a value class
int j {0}; // C3446
};
오류를 수정하려면 이니셜라이저를 제거합니다.
// C3446b.cpp
value struct V
{
int i;
int j;
};