Otra de arrays
Publicado por Googol (255 intervenciones) el 15/11/2003 01:00:31
Hoola de nuevo.
Tengo otra preguntilla sobre arrays. En C++ es posible sobreescribir el operador que hace una conversión de tipos (o cast de tipos). Por ejemplo podríamos hacer una clase Integer que tuviera una conversión automática a tipo int:
class Integer {
public:
// Cosas por aquí ...
operator int() { return value; }
protected:
int value;
};
Con esto, tenemos implementada una conversión de tipos de la clase Integer al tipo int, por lo que es válido:
Integer objeto;
int entero;
[....]
entero = objeto;
Vale. Ahora yo lo que quiero es implementar un cast de tipos que me convierta la clase a una de mis matrices de 4x4 :-)
Una alternativa es usar los socorridos typedef's:
typedef float matriz4x4_t[4][4];
class Matriz4x4 {
protected:
matriz4x4_t datos;
public:
operator matriz4x4_t&() {
return datos;
}
};
Con esto, increíblemente, luego puedo hacer:
Matriz4x4 m;
m[0][0] = 1;
lo que me evita tener que implementar un método
Matrix4x4::dameDato(int, int)
más incómodo de utilizar.
Ahora la pregunta del millón es.... ¿¿cómo se hace eso sin el typedef?? Igual que con mi otra pregunta, esto es un reto personal no resuelto que quiero transmitiros :-D
¡¡Gracias!!
Tengo otra preguntilla sobre arrays. En C++ es posible sobreescribir el operador que hace una conversión de tipos (o cast de tipos). Por ejemplo podríamos hacer una clase Integer que tuviera una conversión automática a tipo int:
class Integer {
public:
// Cosas por aquí ...
operator int() { return value; }
protected:
int value;
};
Con esto, tenemos implementada una conversión de tipos de la clase Integer al tipo int, por lo que es válido:
Integer objeto;
int entero;
[....]
entero = objeto;
Vale. Ahora yo lo que quiero es implementar un cast de tipos que me convierta la clase a una de mis matrices de 4x4 :-)
Una alternativa es usar los socorridos typedef's:
typedef float matriz4x4_t[4][4];
class Matriz4x4 {
protected:
matriz4x4_t datos;
public:
operator matriz4x4_t&() {
return datos;
}
};
Con esto, increíblemente, luego puedo hacer:
Matriz4x4 m;
m[0][0] = 1;
lo que me evita tener que implementar un método
Matrix4x4::dameDato(int, int)
más incómodo de utilizar.
Ahora la pregunta del millón es.... ¿¿cómo se hace eso sin el typedef?? Igual que con mi otra pregunta, esto es un reto personal no resuelto que quiero transmitiros :-D
¡¡Gracias!!
Valora esta pregunta


0