Compartir a través de


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");   
    }
}