15/06/2008, 09:05
|
| | Fecha de Ingreso: junio-2008
Mensajes: 10
Antigüedad: 16 años, 6 meses Puntos: 0 | |
Respuesta: Ayuda con Funciones objeto (funtores) Por si ayuda pongo también la clase pokemon pero ya dije que no tiene ningún problema ya está compilado y comprobado con un main, pero igual os sirve de ayuda.
pokemon.h
Código:
#include <iostream>
#include <string>
#include <utility>
using namespace std;
#ifndef _POKEMON_H
#define _POKEMON_H
class pokemon {
public:
pokemon();
pokemon(const int, const string, const string, const string="");
// Observadores
int dame_numero() const;
string dame_nombre() const;
pair<string,string> dame_tipos() const;
// Modificadores de campo
void mete_numero(const int);
void mete_nombre(const string);
void mete_tipos(const pair<string,string>);
private:
int numero;
string nombre;
pair<string,string> tipos;
};
// Operadores de lectura y escritura
istream & operator >> (istream & , pokemon & );
ostream & operator << (ostream & , const pokemon & );
// Operador <
bool operator < (const pokemon &, const pokemon &);
pokemon.cc
Código:
#include <pokemon.h>
#include <fstream>
pokemon::pokemon() : numero(-1), nombre(""), tipos("","") {}
pokemon::pokemon(const int num, string nom, const string t1, const string t2)
: numero(num), nombre(nom), tipos(t1,t2) {}
int pokemon::dame_numero() const {
return numero;
}
string pokemon::dame_nombre() const {
return nombre;
}
pair<string,string> pokemon::dame_tipos() const {
return tipos;
}
void pokemon::mete_numero(const int num) {
numero=num;
}
void pokemon::mete_nombre(const string nom) {
nombre=nom;
}
void pokemon::mete_tipos(const pair<string,string> tps) {
tipos=tps;
}
istream & operator >> (istream & in, pokemon & p) {
int num,ntipos;
string nom,t1,t2;
in>>num;
in>>nom;
in>>ntipos;
if ( ntipos == 2 ) {
in>>t1;
in>>t2;
}
else{
in>>t1;
t2="";
}
pokemon aux(num,nom,t1,t2);
p=aux;
return in;
}
ostream & operator << (ostream & out, const pokemon & p) {
out<<p.dame_numero()<<"\t"<<p.dame_nombre()<<"\t";
if ( p.dame_tipos().second == "") {
out<<"1\t"<<p.dame_tipos().first;
}
else {
out<<"2\t"<<p.dame_tipos().first<<"\t"<<p.dame_tipos().second;
}
return out;
}
bool operator < (const pokemon & pok1, const pokemon &pok2) {
if(pok1.dame_numero()<pok2.dame_numero()) return true;
else return false;
}
#endif
editado: YA FUNCIONA!!
Última edición por shacklebolt; 16/06/2008 a las 02:30 |