Delen via


Compilerfout C3446

'klasse': een standaard initialisatiefunctie voor leden is niet toegestaan voor een lid van een waardeklasse

Opmerkingen

In Visual Studio 2015 en eerder heeft de compiler een standaard initialisatiefunctie voor leden toegestaan (maar genegeerd) voor een lid van een waardeklasse. Standaardinitialisatie van een waardeklasse initialiseert altijd nul-initialisatie van de leden; een standaardconstructor is niet toegestaan. In Visual Studio 2017 veroorzaken standaard initialisatieprogramma's voor leden een compilerfout, zoals wordt weergegeven in dit voorbeeld:

Example

In het volgende voorbeeld wordt C3446 gegenereerd in Visual Studio 2017 en hoger:

// 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
};

Verwijder de initialisatiefunctie om de fout te corrigeren:

// C3446b.cpp
value struct V
{
       int i;
       int j;
};