1
J'ai une classe PieceStrategy:Inclure la dépendance
#include "QueenStrategy.cpp"
class PieceStrategy {
void promoteToQueen() {
this = new QueenStrategy();
}
}
Et j'ai une classe QueenStrategy qui hérite de celui-ci:
#include "PieceStrategy.cpp"
class QueenStrategy : public PieceStrategy {}
se pose maintenant la circulaire comprend problème. Mais dans ce cas, je ne peux pas utiliser la déclaration forward.
Que dois-je faire?
Vous ne devriez pas inclure des fichiers cpp (mise en œuvre). Pourquoi fais-tu ça? –
Faire 'this = new ...' ne fonctionnera pas comme prévu. '* this = ...' pourrait fonctionner partiellement, mais cela ne fera pas de 'this' une instance de la nouvelle classe. –
En ce qui concerne votre problème, ne définissez pas la fonction membre en ligne dans la classe, faites-le dans un fichier source à la place. Il n'est alors pas nécessaire d'inclure le fichier d'en-tête '' "QueenStrategy.h" 'dans le fichier d'en-tête' 'PieceStrategy.h" '. –