外国語でコードをごめんなさい申し訳ありません。子どもの代わりにコンパイラが基本クラスのメソッドを呼び出す
私は、コンパイラが下のコードをコンパイルするときに問題が発生しました。コンパイラは、子の代わりに基本メソッドを呼び出します。
私は、この基本クラスを持っている:
Jugador.h
#ifndef JUGADOR_H_
#define JUGADOR_H_
#include <iostream>
using namespace std;
class Jugador{
protected:
bool color;//true->rojo false-> azul
public:
Jugador(bool rojo) { color = rojo; }
Jugador() {}
virtual string getInput();
~Jugador(){}
};
#endif
Jugador.cpp
#include "Jugador.h"
using namespace std;
string Jugador::getInput(){
cout<<"Is Called"<<endl;
}
そして、この子クラス: JugadorHumano.h
#ifndef JUGADORHUMANO_H_
#define JUGADORHUMANO_H_
#include <iostream>
#include <string>
#include "Jugador.h"
using namespace std;
class JugadorHumano: public Jugador {
public:
JugadorHumano(bool rojo) :Jugador(rojo) {}
virtual string getInput();//Tested with override too
};
#endif
#include "JugadorHumano.h"
using namespace std;
string JugadorHumano::getInput(){
string input;
getline(cin, input);
return input;
}
JugadorHumano.cpp
はその後、それら二つとは無関係の第三のクラスのメソッドに外に私が作ったそれらを使用して:あなたの注意のためのJugador rojo;
rojo=JugadorHumano(true);
rojo.getInput();
感謝を。
編集:申し訳ありませんが、これは私の最初の質問ですが、CPPファイル
EDIT2追加:@ Raindrop7によって推薦した変更を、今コンパイルしますが、それでも基本メソッドを呼び出し、それが代わりにやっての「と呼ばれている」印刷しますgetline。
EDIT3:ありがとう
OLD:コンパイラは、それは " 'Jugador ::か、getInput()' 未定義ですへの参照" エラーがスローされますか、getInputする到着すると。なぜこれが起こるのか、それを修正する方法はわかりません。
オブジェクトのスライスをルックアップ – NathanOliver
[MCVE]を確認してください。あなたのスニペットにはgetinput()メソッドの実装がないので、リンカーはそれを見つけることができません。 –
Jugador :: getInput()をどこで定義しましたか? – HazemGomaa