Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
'class_type': kan niet worden opgevangen omdat destructor en/of kopieerconstructor niet toegankelijk of verwijderd zijn
Opmerkingen
Er is een uitzondering op basis van waarde of verwijzing gedetecteerd, maar de kopieerconstructor, de toewijzingsoperator of beide waren niet toegankelijk.
Wijzigingen in overeenstemming in Visual Studio 2015 hebben deze fout toegepast op ongeldige catch-instructies van MFC-uitzonderingen die zijn afgeleid van CException. Omdat CException een overgenomen privékopieconstructor is, kunnen de klasse en de derivaten ervan niet worden gekopieerd en kunnen ze niet worden doorgegeven door een waarde, wat ook betekent dat ze niet kunnen worden gevangen door waarde. Catch-instructies die MFC-uitzonderingen op waarde hebben afgevangen, leidden eerder tot ondeugdelijke uitzonderingen tijdens runtime. De compiler identificeert deze situatie nu correct en rapporteert fout C2316. U kunt dit probleem oplossen door de MFC TRY/CATCH-macro's te gebruiken in plaats van uw eigen uitzonderingshandlers te schrijven. Als dit niet geschikt is voor uw code, kunt u in plaats daarvan MFC-uitzonderingen opsporen.
Example
In het volgende voorbeeld wordt C2316 gegenereerd en ziet u een manier om dit op te lossen:
// 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");
}
}