チェスプログラムを作ろうとしていますが、さまざまなAIを実装できるようにしたいと思っています。したがって、私はAIgenericから抽象AIgenericクラスと派生クラスAIrandomを作成しました。次に、chessAIインターフェイスで、AIのリストを作成し、AIのgetNextMove関数を呼び出して、セグメンテーション違反に遭遇しようとします。コードは次のとおりです。
class AIgeneric {
public:
virtual int getNextMove(int*, const int &) = 0;
}
class AIrandom : public AIgeneric {
public:
AIrandom();
virtual int getNextMove(int*, const int &);
}
class chessAI {
public:
chessAI();
~chessAI();
void setAI();
int getNextMove(int*, const int &);
private:
vector<AIgeneric*> AIlist;
vector<string> names;
int selectedAI;
};
chessAI::chessAI () {
AIrandom randomAI;
AIlist.push_back(&randomAI);
names.push_back("Random AI");
selectedAI = -1;
}
int chessAI::getNextMove(int * board, const int & color) {
return AIlist[selectedAI]->getNextMove(board, color); //segfault on this line
}
誰かがこの問題について私を助けてくれるといいですね!
編集:getNextMoveを呼び出す前に、selectedAIを0に設定します。