Tengo una clase con un miembro que no cambia con los métodos de la clase, así que la marqué como const
. Mi problema es que estaba usando el operador de asignación predeterminado como un constructor de copia para evitar múltiples declaraciones. Pero en este caso, el operador de asignación no se genera automáticamente, entonces obtengo algunos errores de compilación: 'operator =' function is unavailable
. Esto parece que no hay un escenario de la vida real donde los miembros de la clase const puedan ser realmente utilizados (por ejemplo, ¿has visto algún miembro de la const en el código STL?).¿Los miembros de la clase const son útiles cuando el operador de asignación está sobrecargado?
¿Hay alguna manera de solucionar esto, además de eliminar const
?
EDITAR: un código
class A
{
public :
const int size;
A(const char* str) : size(strlen(str)) {}
A() : size(0) {}
};
A create(const char* param)
{
return A(param);
}
void myMethod()
{
A a;
a = create("abcdef");
// do something
a = create("xyz");
// do something
}
He editado el título de algo que creo que describe más de cerca lo que quería hacer, y alentará a obtener más respuestas útiles. Si no está de acuerdo, siéntase libre de cambiarlo nuevamente. – Crashworks
@Crashworks gracias! –