![]() |
![]() |
| Paypal | 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 |
|