FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Duda operadores de clase
Hola, no sé si es que no entiendo bien el uso de operadores sobrecargados,
pero no consigo usarlos. Intento poder acceder a un elemento mediante el operador [], pero que el tipo del elemento sea distinto del tipo de la clase. Os pongo un ejemplo básico, defino la siguientes clase: Código:
class miClase { private: int a[2]; public: miClase() { a[0] = 1; a[1] = 2;} int & operator[] (int pos){ return a; } }; void main() { miClase * z = new miClase(); int b = z[1]; } defino en mi operador de clase pues todo lo contrario, obtengo error de compilación "E2034 Cannot convert 'miClase' to 'int' ¿alguien sabe que hago mal? gracias
__________________
http://www.qdsSoftware.com |
#2
|
|||
|
|||
alguna idea?
__________________
http://www.qdsSoftware.com |
#3
|
||||
|
||||
Pues a ver, de esto no sé gran cosa, pero de entrada, el operador debería regresar una entrada del arreglo y no todo el arreglo ¿no? Tampoco entiendo el uso de los apuntadores, ¿por qué no devuelves directamente la entrada?
Prueba así: Código:
class miClase { private: int a[2]; public: miClase() { a[0] = 1; a[1] = 2; } int operator[] (int pos){ return a[pos]; } }; int main(int argc, char *argv[]) { miClase * z = new miClase(); int b = (*z)[1]; } |
#4
|
||||
|
||||
El error es que estás aplicando el operador [] a un puntero no a un objeto de la clase. Cuando se aplica a un puntero funciona como un índice.
Fíjate en esta implementación: Código:
class miClase { private: int a[2]; public: miClase() { a[0] = 1; a[1] = 2;} int& operator[] (int i){ return a[i]; } }; void main() { miClase z; // esto en C++ es perfectamente válido y muy útil. int b = z[1]; } Código:
void main() { miClase *z = new miClase; int b = (*z)[1]; // Aplicamos el operador [] a un objeto no a un puntero. } Saludos. |
#5
|
|||
|
|||
efectivamente ese era el problema
muchas gracias
__________________
http://www.qdsSoftware.com |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Pasar mi clase a una clase de 3 capas o lo mas parecido | elarys | OOP | 2 | 07-04-2011 23:02:54 |
clase que contiene otra clase definida de forma posterior | astwin | OOP | 5 | 20-02-2009 11:26:55 |
Duda sobre creación de clase (Free y Destroy) | adlfv | OOP | 3 | 09-10-2005 06:11:16 |
Duda sobre operadores | Luis M. | Varios | 2 | 28-03-2005 19:21:22 |
sobrecarga de operadores | zuriel_zrf | Varios | 1 | 11-09-2003 13:08:36 |
|