Megosztás a következőn keresztül:


C3446-os fordítási hiba

"osztály": egy alapértelmezett tag inicializálója nem engedélyezett egy értékosztály tagjának

Megjegyzések

A Visual Studio 2015-ben és korábbi verzióiban a fordító engedélyezte (de figyelmen kívül hagyta) az alapértelmezett tag inicializálóját egy értékosztály egy tagjának. Az értékosztály alapértelmezett inicializálása mindig nulla inicializálja a tagokat; az alapértelmezett konstruktor nem engedélyezett. A Visual Studio 2017-ben az alapértelmezett tag-inicializálók fordítóhibát okoznak, ahogyan az ebben a példában látható:

Example

Az alábbi példa c3446-ot hoz létre a Visual Studio 2017-ben és újabb verzióiban:

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

A hiba kijavításához távolítsa el az inicializálót:

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