Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
"class_type": nelze zachytit jako destruktor nebo konstruktor kopírování je nepřístupný nebo odstraněný.
Výjimku zachytila hodnota nebo odkaz, ale konstruktor kopírování, operátor přiřazení nebo obojí byly nedostupné.
Poznámky
Změny shody v sadě Visual Studio 2015 provedly tuto chybu u chybných příkazů catch výjimek mfc odvozených z CException. Vzhledem k tomu CException , že má zděděný konstruktor privátní kopie, třída a jeho deriváty nejsou kopírovatelné a nelze je předat hodnotou, což také znamená, že je nelze zachytit hodnotou. Příkazy catch, které zachytily výjimky MFC podle hodnoty dříve vedly k nezachyceným výjimkám za běhu. Kompilátor teď správně identifikuje tuto situaci a hlásí chybu C2316. Pokud chcete tento problém vyřešit, doporučujeme místo psaní vlastních obslužných rutin výjimek použít makra MFC TRY/CATCH. Pokud to není vhodné pro váš kód, zachyťte výjimky MFC odkazem.
Příklad
Následující ukázka vygeneruje C2316 a ukazuje způsob, jak ji opravit:
// 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");
}
}