Partager via


Erreur du compilateur C2316

Mise à jour : novembre 2007

Message d'erreur

'exception' : ne peut pas être intercepté en tant que destructeur et/ou le constructeur de copie est inaccessible
'exception' : cannot be caught as the destructor and/or copy constructor are inaccessible

Une exception a été interceptée par valeur ou par référence, mais le constructeur de copie et/ou l'opérateur d'assignation était inaccessible.

Ce code était accepté par le compilateur de la version précédente, mais génère maintenant une erreur. Pour plus d'informations, consultez Récapitulatif des modifications sans rupture au moment de la compilation.

Exemple

L'exemple suivant génère l'erreur 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");   
    }
}