[C con Clase] que no compila

dani ddagnino en gmail.com
Mie Mayo 27 17:23:45 CEST 2009


Hola gente,
estoy empezando a programar con clases y me he roto la cabeza buscando errores en el siguiente programa, haber si me podéis echar un cable.

El main.cpp es:
#include <cstdlib>

#include <iostream>
#include <cmath>
#include "complejos.h"

using namespace std;



int main(){

complejo z1(1.,2.),z2(3.,4.);
cout << "z1 =  " << z1 << endl;
cout << "z2 =  " << z2 << endl;
cout << "z1+z2 =  " << z1+z2 << endl;

getchar();
 return 0;

}

El complejos.h es:
#ifndef _COMPLEJOS_H_

#define _COMPLEJOS_H_


class complejo {
	public:
		complejo (double aa=0.0, double bb=0.0);
		complejo operator +(const complejo& z);

	private:
		friend std::ostream& operator << (ostream& output, const complejo& z);

		double a,b;

	};

#endif

Y el complejos.cpp es:
#include <iostream>
#include <cmath>
#include "complejos.h"
using namespace std;

inline complejo::complejo (double aa, double bb): a(aa), b(bb) {}

inline std::ostream& operator << (ostream& output, const complejo& z){
	output << z.a << " " << z.b;
	return output;
	}


inline complejo complejo::operator +(const complejo& z){

   complejo temp (a+z.a , b+z.b);

   return temp;

   }

El Makefile es (creo que no hace falta pero yo lo meto):
CXX = g++
CCFLAGS = -g -Wall

myproj: main.o complejos.o
	$(CXX) $(CCFLAGS) -o myproj main.o complejos.o

complejos.o: complejos.cpp complejos.h
	$(CXX) $(CCFLAGS) -c complejos.cpp

main.o: main.cpp complejos.h
	$(CXX) $(CCFLAGS) -c main.cpp

El error al compilar es enorme así que no lo pongo, aun así lo que si me dice al principio es literalmente "la declaración de ‘operator<<’ como algo que no es función". He buscado en internet y he probado mil formas de escribir lo mismo pero siempre me peta al compila. Bueno, ya se que quizás estoy pidiendo mucho pero cualquier ayuda es bienvenida.
Saludos y gracias de ante mano,
Dani.


Más información sobre la lista de distribución Cconclase