J'ai une classe de base (Tableau) avec une fonction (appelée mise à jour) et à l'intérieur de cette fonction, j'appelle une autre fonction appelée updateCustom.override et héritage
Je souhaite hériter de ma classe Base avec ma classe JeuTaquin et pouvoir remplacer la fonction updateCustom dans JeuTaquin. Donc dans ma main quand j'appelle la mise à jour de la fonction en utilisant un objet JeuTaquin, je veux faire démarrer mon updateCustom de JeuTaquin mais je ne sais pas comment faire!
Voici ma fonction de mise à jour à l'intérieur 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;
}
Dans mon Tableau de classe, ma fonction updateCustom est vide (mais il est déclaré). Dans ma classe de JeuTaquin, je passer outre ma fonction updateCustom comme ceci: (mais il n'a pas vraiment de voir ce qui est à l'intérieur de cette fonction)
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;
}
}
Je ne pouvais pas trouver des conseils sur internet, quand je lance ma mise à jour Fonctionne avec un objet JeuTaquin, il lance mon updateCustom vide de ma classe Parent au lieu de mon updateCustom de ma classe enfant (JeuTaquin). Merci pour l'aide.
est '' updateCustom' virtual'? – Unimportant
non, updateCustom n'est pas virtuel –
Eh bien, il devrait être, lire à propos de 'virtual'. – Unimportant