[C++] Operatore pubblico nuovo, operatore privato delete: ottenere C2248 "impossibile accedere al membro privato" quando si utilizza new


Answers

Controlla questo . In uno dei paragrafi in basso si dice che il nuovo richiede che l'eliminazione sia accessibile. In sostanza, si dice, è possibile solo creare oggetti sull'heap, se è possibile eliminarli nuovamente.

Question

Una classe ha sovraccaricato gli operatori new e delete . new è pubblico, delete è privato.

Quando costruisco un'istanza di questa classe, ottengo il seguente errore:

pFoo = new Foo(bar)

example.cpp (1): errore C2248: 'Foo: operator delete': impossibile accedere al membro privato dichiarato nella classe 'Foo'

Ma non c'è nessuna chiamata da delete qui, quindi cosa sta succedendo nella mente distorta del compilatore? :)

  1. Qual è la ragione dell'errore?
  2. È possibile risolvere il problema senza ricorrere a una funzione CreateInstance membro?



  • "1. Qual è il motivo dell'errore?"

    la risposta di sbi è buona.

  • "2.È possibile risolvere il problema senza ricorrere a una funzione CreateInstance del membro?"

    Sì. Crea un distruttore privato.