[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