Tengo los siguientes archivos:
Personaje.h
Código C++:
Ver original
#ifndef PERSONAJE_H #define PERSONAJE_H class Personaje { public: Personaje(int = 0, int = 0, int = 0, int = 0); int getHP(); int getATAQUE(); int getRESISTENCIA(); int getPODER(); void restarHP(int); private: int hp; int ataque_fisico; int resistencia_fisica; int poder_ataque; }; #endif
Personaje.cpp
Código C++:
Ver original
#include "Personaje.h" Personaje::Personaje(int h, int a, int r, int p) : hp(h), ataque_fisico(a), resistencia_fisica(r), poder_ataque(p) { // Constructor vacío. } int Personaje::getHP() { return hp; } int Personaje::getATAQUE() { return ataque_fisico; } int Personaje::getRESISTENCIA() { return resistencia_fisica; } int Personaje::getPODER() { return poder_ataque; } void Personaje::restarHP(int x) { hp = hp - x; }
Simulador.h
Código C++:
Ver original
#ifndef SIMULADOR_H #define SIMULADOR_H #include "Personaje.h" class Simulador { public: Simulador(Personaje, Personaje); // Constructor. void pelear(); // Función para empezar una pelea. private: Personaje jugador; Personaje enemigo; }; #endif
Simulador.cpp
Código C++:
Ver original
#include <iostream> using std::cout; using std::cin; using std::endl; #include <cstdlib> #include <ctime> #include "Simulador.h" Simulador::Simulador(Personaje a, Personaje b) : jugador(a), enemigo(b) { // Constructor vacío. } void Simulador::pelear() { int bla; int dano; enum estado{GANO, PERDIO, CONTINUA}; estado juego; juego = CONTINUA; cout << "\nBola de moco gigante ha aparecido!\nQue comience la batalla!\n" << endl; cout << "HP del jugador: " << jugador.getHP() << endl; cout << "\nHP del enemigo: " << enemigo.getHP() << endl; cout << "Escribe cualquier numero (no muy grande) y aprieta enter para atacar:"; cin >> bla; while(juego == CONTINUA) { cout << "HP del jugador: " << jugador.getHP() << endl; cout << "HP del enemigo: " << enemigo.getHP() << endl; cout << "\nEscribe un numero y aprieta enter para atacar: "; cin >> bla; cout << "Jugador ha atacado!!!" << endl; if(dano > enemigo.getHP()) dano = enemigo.getHP(); cout << "Enemigo ha perdido " << dano << " HP" << endl; enemigo.restarHP(dano); if(enemigo.getHP() == 0) { juego = GANO; continue; } cout << "El enemigo ha atacado!!!" << endl; if(dano > jugador.getHP()) dano = jugador.getHP(); cout << "Jugador ha perdido " << dano << " HP" << endl; jugador.restarHP(dano); if(jugador.getHP() == 0) { juego = PERDIO; } } if(juego == GANO) { cout << "El jugador ha ganado. Si que mola, se sabe sonar los mocos." << endl; } if(juego == PERDIO) { cout << "El jugador ha perdido. No rockanrolea ni se sabe sonar los mocos." << endl; } }
Main.cpp
Código C++:
Ver original
#include <iostream> using std::cout; using std::cin; using std::endl; #include "Personaje.h" #include "Simulador.h" int main() { int opcion; Personaje jugador; Personaje enemigo; Simulador simulador(jugador, enemigo); int hp_jugador; int ataque_jugador; int resistencia_jugador; int ppf_jugador; int hp_enemigo; int ataque_enemigo; int resistencia_enemigo; int ppf_enemigo; cout << "Elija una opcion: " << endl; cout << "1 - Jugar un juego." << endl; cout << "2 - Salir." << endl << endl; cin >> opcion; while(opcion == 1) { cout << "Ingrese los siguientes datos: " << endl << endl; cout << "HP del personaje: "; cin >> hp_jugador; cout << "Ataque del jugador: "; cin >> ataque_jugador; cout << "Resistencia del jugador: "; cin >> resistencia_jugador; cout << "Poder del ataque del jugador: "; cin >> ppf_jugador; cout << "\nHP del enemigo: "; cin >> hp_enemigo; cout << "Ataque del enemigo: "; cin >> ataque_enemigo; cout << "Resistencia del enemigo: "; cin >> resistencia_enemigo; cout << "Poder de ataque del enemigo: "; cin >> ppf_enemigo; jugador = new Personaje(hp_jugador, ataque_jugador, resistencia_jugador, ppf_jugador); enemigo = new Personaje(hp_enemigo, ataque_enemigo, resistencia_enemigo, ppf_enemigo); simulador = new Simulador(jugador, enemigo); simulador.pelear(); } cout << "El programa ha terminado su ejecucion con exito. Blablabla." << endl; return 0; }
Bueno, son todos. Los archivos Simulador.cpp y Personaje.cpp compilan perfectamente con g++ -c, pero Main.cpp me da los siguientes errores:
Código:
Espero alguien pueda ayudarme, Saludos. Main.cpp: In function ‘int main()’: Main.cpp:54:93: error: invalid user-defined conversion from ‘Personaje*’ to ‘const Personaje&’ [-fpermissive] In file included from Main.cpp:6:0: Personaje.h:7:5: note: candidate is: Personaje::Personaje(int, int, int, int) <near match> Personaje.h:7:5: note: no known conversion for argument 1 from ‘Personaje*’ to ‘int’ Main.cpp:54:93: error: invalid conversion from ‘Personaje*’ to ‘int’ [-fpermissive] In file included from Main.cpp:6:0: Personaje.h:7:5: error: initializing argument 1 of ‘Personaje::Personaje(int, int, int, int)’ [-fpermissive] Main.cpp:55:93: error: invalid user-defined conversion from ‘Personaje*’ to ‘const Personaje&’ [-fpermissive] In file included from Main.cpp:6:0: Personaje.h:7:5: note: candidate is: Personaje::Personaje(int, int, int, int) <near match> Personaje.h:7:5: note: no known conversion for argument 1 from ‘Personaje*’ to ‘int’ Main.cpp:55:93: error: invalid conversion from ‘Personaje*’ to ‘int’ [-fpermissive] In file included from Main.cpp:6:0: Personaje.h:7:5: error: initializing argument 1 of ‘Personaje::Personaje(int, int, int, int)’ [-fpermissive] Main.cpp:57:51: error: no match for ‘operator=’ in ‘simulador = (operator new(32u), (<statement>, ((Simulador*)<anonymous>)))’ Main.cpp:57:51: note: candidate is: In file included from Main.cpp:7:0: Simulador.h:6:7: note: Simulador& Simulador::operator=(const Simulador&) Simulador.h:6:7: note: no known conversion for argument 1 from ‘Simulador*’ to ‘const Simulador&’