El ejemplo mínima del problema que estoy teniendo se reproduce a continuación:Asignación de datos de miembros en de sólo lectura estructura, clase en STL establece
#include <set>
using namespace std;
class foo {
public:
int value, x;
foo(const int & in_v) {
value = in_v;
x = 0;
}
bool operator<(const foo & rhs) const {
return value < rhs.value;
}
};
int main() {
foo y(3);
set<foo> F;
F.insert(y);
// Now try to modify a member of the set
F.begin()->x=1;
return 0;
}
Con el error error: assignment of data-member ‘foo::value’ in read-only structure
. Siento que me falta algo simple aquí, pero ¿por qué no puedo modificar el miembro x
en mi clase?
Bueno, la parte inmutable tiene sentido ahora. ¿Es esta la forma estándar de editar un elemento en el conjunto, con las dos copias? – Hooked
@Hooked: Sí; necesita hacer dos copias: una para copiar el objeto viejo fuera del conjunto y otra para copiar el nuevo objeto en el conjunto. –