Una clase ha sobrecargado los operadores new
y delete
. new
es público, delete
es privado.Operador público nuevo, operador privado eliminar: obtener C2248 "no se puede acceder al miembro privado" cuando se usa el nuevo
Cuando se construye una instancia de esta clase, me sale el siguiente error:
pFoo = new Foo(bar)
example.cpp (1): error C2248: 'Foo: operador delete': no se puede miembro privado de acceso declarado en la clase 'Foo'
Pero no hay una llamada al delete
aquí, entonces, ¿qué está pasando en la retorcida mente del compilador? :)
- ¿Cuál es la razón del error?
- ¿Es posible resolver el problema sin recurrir a la función de miembro
CreateInstance
?
El problema con 2.es que la clase se puede heredar y su destructor se puede redefinir como público accidentalmente. – Marius
Cualquier clase con destructor privado no se puede heredar. –