[Programación] c++-style,, el maldito forward
Horacio Castellini
horacio9573 en yahoo.com.ar
Lun Ago 13 15:59:17 ART 2012
Bueno la verdad que esto merece ser escrito para la posteridad... ya que
antes funcionaba al viejo estilo c++ pero ahora no y hay que hacer un
forward...
En el caso de que tenga dos clases donde ambas usan una declaración
común por ejemplo:
friend vector operator*(const matriz&, const vector&);
antes bastaba con definir los métodos como: ( Stroustruop style)
//clase matriz
class matriz {
friend class vector;
protected:
unsigned col, fila;
double** M;
public:
..
};
class vector {
protected:
unsigned tam;
double* v;
public:
...
};
pero si uno lo compila, el compilador gnu moderno putea a lo perro...
/home/hcaste/include/algebra.h:88:9: error: ‘vector’ no nombra a un tipo
/home/hcaste/include/algebra.h: En la función ‘vector operator*(const
matriz&, const vector&)’:
/home/hcaste/include/algebra.h:72:16: error: ‘unsigned int matriz::fila’
está protegido
/home/hcaste/include/algebra.h:386:14: error: desde este contexto
/home/hcaste/include/algebra.h:72:11: error: ‘unsigned int matriz::col’
está protegido
La solución que encontré fue definir un forward de clase... que viene
con el moderno c++-style (1),,, cuack!!
(1) http://geosoft.no/development/cppstyle.html/
Pta: Digo yo... los que están toqueteando el compilador gnu/c++ que
están fumando??
Más información sobre la lista de distribución Programacion