Errore del compilatore C2316

Aggiornamento: novembre 2007

Messaggio di errore

'eccezione': non può essere intercettato come distruttore e/o i costruttori di copia sono inaccessibili
'exception' : cannot be caught as the destructor and/or copy constructor are inaccessible

È stata individuata un'eccezione da un valore o da un riferimento, ma il costruttore di copia e/o l'operatore di assegnazione non sono accessibili.

Tale codice veniva accettato dal compiler della versione precedente ma attualmente causa un errore. Per ulteriori informazioni, vedere Riepilogo delle ultime modifiche in fase di compilazione.

Esempio

Nell'esempio seguente viene generato l'errore 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");   
    }
}