Buenas, resulta que estoy practicando con C++ y en la mayoría de tutoriales sobre clases, por lo menos en español, te enseñan a usarlas sobre un mismo fichero, lo cual no creo que sea la mejor opción, por lo que estoy tratando de generar cada una de las clases en distintos .cpp , pero al querer compilar el programa me da una serie de errores.
Jugador.cpp
Source.cpp
Bueno, en la IDE (Visual Studio 2015), no me da ningún problema antes de compilar, y de hecho si copio la clase Jugador con todos sus métodos y los pego en Source.cpp, funciona, pero al querer usarlos por separado me da los siguientes errores:
Para empezar les paso los codigos:
Jugador.cpp
Código [Seleccionar]
#include <iostream>
using namespace std;
class Jugador{
private:
string nombre;
int puntaje = 0;
public:
Jugador(string);
int getPuntaje();
void setPuntaje(int);
};
Jugador::Jugador(string _nombre){
nombre = _nombre;
}
int Jugador::getPuntaje() {
return puntaje;
}
void Jugador::setPuntaje(int _puntaje) {
puntaje += _puntaje;
}
Source.cpp
Código [Seleccionar]
#include <iostream>
#include <string>
#include "Jugador.cpp"
using namespace std;
int main() {
string nombre;
cout << "Player 1 - Escriba su nombre";
cin >> nombre;
Jugador jugador1(nombre);
cout << "Player 2 - Escriba su nombre";
cin >> nombre;
Jugador jugador2(nombre);
system("pause");
return 0;
}
Bueno, en la IDE (Visual Studio 2015), no me da ningún problema antes de compilar, y de hecho si copio la clase Jugador con todos sus métodos y los pego en Source.cpp, funciona, pero al querer usarlos por separado me da los siguientes errores:
CitarSource.cpp
Jugador.cpp
Generando código...
Source.obj : error LNK2005: ya se definió "public: __thiscall Jugador::Jugador(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0Jugador@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) en Jugador.obj
Source.obj : error LNK2005: ya se definió "public: int __thiscall Jugador::getPuntaje(void)" (?getPuntaje@Jugador@@QAEHXZ) en Jugador.obj
Source.obj : error LNK2005: ya se definió "public: void __thiscall Jugador::setPuntaje(int)" (?setPuntaje@Jugador@@QAEXH@Z) en Jugador.obj
C:\Users\Emanuelx1v2\Documents\Visual Studio 2015\Projects\nya\Debug\nya.exe : fatal error LNK1169: se encontraron uno o más símbolos definidos simultáneamente