Привет.
Я искал решение, но думаю, что эта проблема связана с личным кодом, поэтому я размещаю здесь сообщение.
Я сразу перейду к делу.
В моем главном есть два объекта.
Computer *computer = new Computer();
Player *player = new Player();
В компьютерном классе, в шапке у меня следующее:
private:
Strategy *strategy;
int winningPosition;
int twoInRow;
int counter;
int makeTwo;
Затем в Computer.cpp:
Computer::Computer(char token, bool hasTurn)
{
m_token = token;
m_hasTurn = hasTurn;
strategy = new Strategy();
}
int Computer::getMove(const char (&board)[9])
{
twoInRow = strategy->checkTwoInRow(board);
counter = strategy->counter(board);
makeTwo = strategy->makeTwo(board);
if(twoInRow != 0)
{
return twoInRow - 1;
} else if(counter != 0) {
return counter - 1;
} else if(makeTwo != 0) {
return makeTwo - 1;
} else {
return 0;
}
}
На данный момент я думаю, что проблема возникает.
Все методы, вызываемые из класса Strategy, требуют знания доски:
int checkTwoInRow(const char (&board)[9]);
int counter(const char (&board)[9]);
int makeTwo(const char (&board)[9]);
Проблемы, которые я получаю, не позволяя их скомпилировать:
Error 1 error LNK2019: unresolved external symbol "public: int __thiscall Strategy::makeTwo(char const (&)[9])" (?makeTwo@Strategy@@QAEHAAY08$$CBD@Z) referenced in function "public: int __thiscall Computer::getMove(char const (&)[9])" (?getMove@Computer@@QAEHAAY08$$CBD@Z) C:\CPP\TTT\Computer.obj tictactoeCPP
Error 2 error LNK2019: unresolved external symbol "public: int __thiscall Strategy::counter(char const (&)[9])" (?counter@Strategy@@QAEHAAY08$$CBD@Z) referenced in function "public: int __thiscall Computer::getMove(char const (&)[9])" (?getMove@Computer@@QAEHAAY08$$CBD@Z) C:\CPP\TTT\Computer.obj tictactoeCPP
Error 3 error LNK2019: unresolved external symbol "public: int __thiscall Strategy::checkTwoInRow(char const (&)[9])" (?checkTwoInRow@Strategy@@QAEHAAY08$$CBD@Z) referenced in function "public: int __thiscall Computer::getMove(char const (&)[9])" (?getMove@Computer@@QAEHAAY08$$CBD@Z) C:\CPP\TTT\Computer.obj tictactoeCPP
Как нуб с ++, я понятия не имею, почему или как эта проблема вызвана. Я думаю, что это связано с созданием экземпляра Strategy в компьютерном классе или с параметром, передаваемым из компьютера стратегии в вызовах методов.
Может кто-нибудь объяснить, ПОЧЕМУ эта ошибка происходит, я совсем не понимаю ошибку.
А также как решить / предотвратить это?
EDIT *
Я только что получил запрос на использование класса Стратегии:
Strategy.h:
#pragma once
class Strategy
{
public:
Strategy(void);
~Strategy(void);
int checkTwoInRow(const char (&board)[9]);
int counter(const char (&board)[9]);
int makeTwo(const char (&board)[9]);
};
Класс определил эти методы, я не буду публиковать их, потому что они довольно длинные.