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.
"class_type": nem fogható el, mert a destruktor és/vagy a másolási konstruktor nem érhető el vagy törölhető
Megjegyzések
A kivételt érték vagy hivatkozás érte, de a másolási konstruktor, a hozzárendelési operátor vagy mindkettő elérhetetlen volt.
A Visual Studio 2015-ös megfelelőségi változtatások miatt ez a hiba az MFC-kivételekből származó, CException által derivált hibás elkapási utasításokra vonatkozott. Mivel CException örökölt magánpéldány-konstruktorsal rendelkezik, az osztály és a származékai nem másolhatók, és nem adhatók át érték szerint, ami azt is jelenti, hogy azokat nem lehet érték alapján elkapni. Az MFC-kivételeket érték szerint elkapó fogási utasítások korábban futásidőben nem elkapott kivételekhez vezettek. Most a fordítóprogram helyesen azonosítja ezt a helyzetet, és jelent C2316 hibát. A probléma megoldásához javasoljuk, hogy a saját kivételkezelők írása helyett használja az MFC TRY/CATCH makrókat. Ha ez nem felel meg a kódnak, az MFC-kivételeket inkább hivatkozással foghatja fel.
Example
Az alábbi példa c2316-ot hoz létre, és a javítás módját mutatja be:
// C2316.cpp
// compile with: /EHsc
#include <stdio.h>
struct B
{
public:
B() {}
// Delete the following line to resolve.
private:
// copy constructor
B(const B&) {}
};
void f(const B&)
{
}
int main()
{
try
{
B aB;
f(aB);
}
catch (B b) // C2316
{
printf_s("Caught an exception!\n");
}
}