Udostępnij za pomocą


Błąd kompilatora C3446

"class": domyślny inicjator składowy nie jest dozwolony dla składowej klasy wartości

Uwagi

W programie Visual Studio 2015 i starszych kompilator zezwolił (ale zignorował) domyślny inicjator składowy dla elementu członkowskiego klasy wartości. Domyślna inicjalizacja klasy wartości zawsze inicjuje składowe; konstruktor domyślny jest niedozwolony. W programie Visual Studio 2017 domyślne inicjatory składowych zgłaszają błąd kompilatora, jak pokazano w tym przykładzie:

Przykład

Poniższy przykład generuje C3446 w programie Visual Studio 2017 lub nowszym:

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

Aby naprawić błąd, usuń inicjator:

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