У меня есть базовый класс (Tableau) с функцией (называемой обновлением) и внутри этой функции, я вызываю другую функцию, называемую updateCustom.переопределение и наследование
Я хочу унаследовать свой базовый класс своим классом JeuTaquin и иметь возможность переопределить функцию updateCustom внутри JeuTaquin. Поэтому в моем главном случае, когда я вызываю обновление функции с помощью объекта JeuTaquin, я хочу запустить мой updateCustom из JeuTaquin, но я не знаю, как это сделать!
Вот моя функция обновления внутри Tableau:
template<class T>
void Tableau<T>::update()
{
int p1 = 1, p2 = 1;
int currentTurn = 1;
while(currentTurn!=tour || tour == 0){
cout<<*this<<endl;
updateCustom(getInput()); //HERE I CALL MY UPDATECUSTOM FUNCTION
if(p2 == 1)
computerTurn();
else
cout<<"player 2 game end"<<endl;
p1 = endTurn(plateau1);
p2 = endTurn(plateau2);
if(endCheck(p1))
break;
currentTurn++;
}
cout<<"game ended"<<endl;
}
В моем классе Tableau, моя функция updateCustom пуста (но она объявлена). В моем классе JeuTaquin я сведу функцию updateCustom как это: (но это на самом деле не имеет значения, чтобы увидеть, что находится внутри этой функции)
template<class T>
void Tableau<T>::updateCustom(char input)
{
int i, j;
Case<T> *neighbours;
while(true)
{
neighbours = Tableau<T>::checkNeighbours(Tableau<T>::plateau1, i, j);
if(input == 'z' && neighbours[0] !=nullptr)
{
swap(plateau1[i][j],plateau1[i-1][j]);
cout<<"Mouvement OK"<<endl;
break;
}
else if(input == 'd' && neighbours[1] !=nullptr)
{
swap(plateau1[i][j],plateau1[i][j+1]);
cout<<"Mouvement OK"<<endl;
break;
}
else if(input == 's' && neighbours[2] !=nullptr)
{
swap(plateau1[i][j],plateau1[i+1][j]);
cout<<"Mouvement OK"<<endl;
break;
}
else if(input == 'q' && neighbours[3] !=nullptr)
{
swap(plateau1[i][j],plateau1[i][j-1]);
cout<<"Mouvement OK"<<endl;
break;
}
cout<<"Mouvement IMPOSSIBLE"<<endl;
}
}
Я не мог найти какие-либо советы по Интернету, когда я бег моего обновления функции с объектом JeuTaquin, он запускает мой пустой updateCustom из моего родительского класса вместо моего updateCustom из моего дочернего класса (JeuTaquin). Спасибо за помощь.
ли '' updateCustom' virtual'? – Unimportant
нет, updateCustom не является виртуальным –
Ну, это должно быть, читать о 'virtual'. – Unimportant