다음을 통해 공유


컴파일러 오류 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;
};