(Consulta) [C++] ¿Se puede modificar una constante en la sobrecarga de '='?

Iniciado por class_OpenGL, 20 Febrero 2017, 18:02 PM

0 Miembros y 2 Visitantes están viendo este tema.

class_OpenGL

Hola, muy buenas. Hoy quería preguntar si hay alguna forma de modificar una constante en la sobrecarga del operador igual. Ejemplo:


Código (c++) [Seleccionar]
class Foo {
   private:
      const int VARIABLE;
   
   public:
      [...]
      Foo & operator=(const Foo &foo) {
         VARIABLE = foo.VARIABLE; // Aquí marcaría error
      }
      [...]
};



Muchas gracias

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

ivancea96

Si es una constante, es una constante. Si quieres modificar esa variable, entonces no es un uso correcto de la palabra const. Replantéate el por qué de ese const ahí.

class_OpenGL

Quiero crear una clase Matriz la cual tendrá un número de filas y de columnas. Quiero que esas filas y esas columnas sean constantes. Sé que podría no poner const y prometerme a mi mismo que no modificaré esas variables, pero quiero tener seguro que no las modifico, salvo cuando le asigno a la matriz otra matriz (aquí obviamente cambiarían las dimensiones de la misma).

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

ivancea96

Pues prométetelo xD

No puedes decidir que una variable sea constante en una línea sí y en otra no. Además, el compilador puede tratar las constantes de forma diferente por cuestiones de optimización.

Si quieres estar seguro, pon const en los métodos que lo requieran. En el resto, pues simplemente no lo modifiques.

class_OpenGL


Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

MAFUS

Recuerdo que existe la palabra friend para dat permisos a una clase o métodi para acceder a miembros privados de otra clase. Tal vez esto te sirve para lo qur buscas.