Título: Sobrecargar Operador por defecto de una clase Publicado por: SubAtomicParticula en 2 Agosto 2017, 11:05 am Saludos, quisiera saber si existe un operador por defecto en una clase c++ y si se puede sobrecargar.
Lo que tengo es una clase Cadena que almacena un array char *texto, declarado privado. Pero cuando necesito usar ese texto en una función típica de API de Win32 necesito pasar el puntero al array como es lógico y para ello uso el operador(), pero no me parece elegante, ejemplo: Cadena Titulo("Hola"); SetWindowText(hWnd,Titulo()); Quisiera conseguir esto: Cadena Titulo("Hola"); SetWindowText(hWnd,Titulo); Puede que haya que sobrecargar el Operador= pero no se como diferenciarlo del operador de asignación que ya está sobrecargado. Gracias, un saludo. Título: Re: Sobrecargar Operador por defecto de una clase Publicado por: ivancea96 en 2 Agosto 2017, 12:55 pm Tienes operadores para convertir tipos. Su declaración es:
Código
Aquí es importante ver la importancia de la palabra "explicit": Código
Con explicit, solo podrás hacer la conversión haciendo un cast manualmente (por ejemplo, (int)a) Un ejemplo de todo esto: Código
De todos modos, cuidado con implementar estos operadores sin la palabra explicit. En caso de errores o confusiones, estos operadores pueden ocultar el error. Por ejemplo: Código
Siempre que implementes estos operadores, suele ser buena idea proveer además un método "normal" de conversión, tipo "getCString()" Título: Re: Sobrecargar Operador por defecto de una clase Publicado por: SubAtomicParticula en 2 Agosto 2017, 21:12 pm Muchas gracias, me sirve para lo que quería.
Un saludo. |