Errore del compilatore C3446
'class': un inizializzatore di membro predefinito non è consentito per un membro di una classe valore
In Visual Studio 2015 e versioni precedenti il compilatore consentiva, ma ignorava, un inizializzatore di membro predefinito per un membro di una classe di valori. L'inizializzazione predefinita di una classe di valori inizializza sempre a zero i membri e un costruttore predefinito non è consentito. In Visual Studio 2017 gli inizializzatori di membri predefiniti generano un errore del compilatore, come illustra l'esempio seguente:
Esempio
L'esempio seguente genera l'errore C3446 in Visual Studio 2017 e versioni successive:
// 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
};
Per correggere l'errore, rimuovere l'inizializzatore:
// C3446b.cpp
value struct V
{
int i;
int j;
};