Я создаю простое приложение для решения головоломок судоку.Я впервые создаю что-то серьезное с помощью C ++, поэтому я открыт для критики стиля / структуры кода.
Проблема, с которой я столкнулся, связана с организацией нескольких файлов.
У меня есть два класса, ссылающихся друг на друга с помощьюфункции.Когда я пытаюсь вызвать функцию:
void Field::runColumnCheckout(CellGroup* sender, int cellRelativeX)
{
}
в классе CellGroup
, используя экземпляр класса Field
:
void CellGroup::runISC(int possibilityNumber)
{
for (int x = 0; x < 3; x++) {
int amountInColumn = 0;
for (int y = 0; y < 3; y++)
if (cells[x][y]->isPossible(possibilityNumber))
amountInColumn++;
if (amountInColumn > 1) {
//parentField is an instance of a Field class
//stored in a private field of the CellGroup class
parentField->runColumnCheckout(this, x);
return;
}
}
//...
}
Возникает неопределенная ссылка.Я не совсем понимаю, почему.
Все примеры были взяты из cell_group.cpp
и field.cpp
, которые определяют классы из cell_group.h
и field.h
.
К сожалению, я не смогудается задать все файлы в вопросе, поскольку они набрали много строк, но вы можете посмотреть их на моем github .
Я нашел аналогичный вопрос и еще один , но, похоже, у них проблемы с компиляцией файлов.У меня было два ссылающихся друг на друга класса, структурированных одинаково, прежде чем добавлять код, с которым у меня сейчас проблемы, и все прекрасно скомпилировано.
Я компилирую все, используя компилятор GCC для Windows и CodeBlocks в качестве IDE.