Error del compilador C2316
Actualización: noviembre 2007
Mensaje de error
'excepción' : no se puede detectar porque no se puede obtener acceso al destructor o al constructor de copias
'exception' : cannot be caught as the destructor and/or copy constructor are inaccessible
Se ha detectado una excepción por valor o por referencia pero no se ha podido obtener acceso al constructor de copias o al operador de asignación.
El compilador de la versión anterior aceptaba este código, pero ahora produce un error. Para obtener más información, vea Resumen de cambios importantes en tiempo de compilación.
Ejemplo
El ejemplo siguiente genera el error C2316:
// C2316.cpp
// compile with: /EHsc
#include <stdio.h>
extern "C" int printf_s(const char*, ...);
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");
}
}