elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Sobrecarga operador -> [C++]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sobrecarga operador -> [C++]  (Leído 564 veces)
K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 902



Ver Perfil
Sobrecarga operador -> [C++]
« en: 6 Enero 2019, 10:30 am »

Tengo la siguiente clase y estoy intentando sobrecargar el operador -> pero sólo puedo sobrecargarlo con constantes, me explico:
Código
  1. class ConjuntoEnteros{
  2.    private:
  3.        std::set<int> private_set;
  4.    public:
  5.        ConjuntoEnteros();
  6.        // ...
  7.        class Iterator{
  8.            private:
  9.                 std::set<int>::iterator private_iterator;
  10.            public:
  11.                  Iterator();
  12.                  // ...
  13.                  int* operator->(){
  14.                      return &*private_iterator;
  15.                  }
  16.         };
  17. };

Entonces si intento sobrecargar ese operador -> me da un error. Lo he conseguido solucionar modificándolo así:
Código
  1. const int* operator->(){
  2.     return &*private_iterator;
  3. }

Entonces no sé si es posible sobrecargar ese operador cómo lo había intentado al principio o siempre tiene que ser constante. :-X


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Cero++

Desconectado Desconectado

Mensajes: 52



Ver Perfil WWW
Re: Sobrecarga operador -> [C++]
« Respuesta #1 en: 6 Enero 2019, 14:26 pm »

Pues mira, creo que poniendo
Código
  1. int operator->()const
Se arregla la cosa, no tengo muy bien entendido si es un puntero a entero la variable
Código
  1. private_iterator
pero poniéndolo como yo digo, se arregla
Código
  1. int operator->()const{
  2. return *private_iterator; //Saque el alias y puse desreferencia
  3. }
Si me decís qué es la variable iterator_private, podemos llegar a una conclusión juntos  :xD


En línea

Código:
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]
K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 902



Ver Perfil
Re: Sobrecarga operador -> [C++]
« Respuesta #2 en: 6 Enero 2019, 17:21 pm »

La variable <private_iterator> es un std::set<T>::iterator, es decir; un iterador de set. El tema de hacer que devuelva un puntero a entero es porque si no se usa la flecha la otra alternativa sería esta:
Código
  1. (*private_iterator).metodo();
  2. private_iterator->metodo();

Por eso he deducido que el valor de retorno del operador -> sería un puntero al tipo de dato que retorna el *.

PD: No he probado si se soluciona con lo que me comentas de hacer el método constante. Cuando pueda lo probaré y si funciona ya lo comentaré por aquí. Es que he estado buscando bastante información en internet sobre este operador y sobre sobrecargarlo y lo único que he encontrado es que se puede sobrecargar pero no he encontrado cómo se haría. Gracias por la respuesta :-X



Pues mira, creo que poniendo
Código
  1. int operator->()const

Ya he probado esto a ver si funciona y no. Tengo el mismo problema usando esa función que si uso la primera que he mostrado yo. De momento la única solución que he encontrado es que el valor de retorno sea constante. Si alguien sabe algo más al respecto... :-X
« Última modificación: 6 Enero 2019, 18:38 pm por YreX-DwX » En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
sobrecarga de operador<<
Programación C/C++
adam96 5 3,056 Último mensaje 17 Diciembre 2010, 19:10 pm
por Littlehorse
Sobrecarga operador +
Programación C/C++
_Enko 4 1,282 Último mensaje 6 Febrero 2015, 14:56 pm
por _Enko
Sobrecarga de operador « 1 2 »
Programación C/C++
digimikeh 10 1,827 Último mensaje 18 Mayo 2019, 03:39 am
por RayR
Sobrecarga de operador y constructores/destructores
Programación C/C++
digimikeh 8 1,084 Último mensaje 18 Junio 2019, 15:35 pm
por digimikeh
Sobrecarga operador+ y miembro puntero...
Programación C/C++
digimikeh 5 717 Último mensaje 19 Junio 2019, 05:22 am
por digimikeh
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines