[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