Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A(z) "type" másolási listás inicializálásához nem használható explicit konstruktor.
Megjegyzések
Az ISO C++17 szabvány szerint a fordítónak explicit konstruktort kell figyelembe vennie a másoláslista-inicializálás túlterhelésének feloldásához, de hibát kell okoznia, ha a túlterhelést ténylegesen választják.
A Visual Studio 2017-től kezdve a fordító az objektumlétrehozással kapcsolatos hibákat találja meg, amelyeket a Visual Studio 2015 nem talált, egy inicializálási lista használatával. Ezek a hibák futásidőben összeomlásokhoz vagy nem definiált viselkedéshez vezethetnek.
Example
Az alábbi példa C3445-öt hoz létre.
// C3445.cpp
struct A
{
explicit A(int) {}
A(double) {}
};
int main()
{
A a1 = { 1 }; // error C3445: copy-list-initialization of
// 'A' cannot use an explicit constructor
}
A hiba kijavításához használja inkább a közvetlen inicializálást:
// C3445b.cpp
struct A
{
explicit A(int) {}
A(double) {}
};
int main()
{
A a1{ 1 };
}