我正在构建一个简单的应用程序来解决数独难题。这是我第一次使用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上查看它们。
我找到了similar question和another one,但是它们似乎在编译文件的方式上存在问题。在添加我现在遇到问题的代码之前,我已经有两个互相引用结构相似的类,并且一切都编译良好。
我正在使用Windows上的GCC编译器以及作为IDE的CodeBlocks编译所有内容。
答案 0 :(得分:0)
CodeBlocks以某种方式失去了与field.cpp文件的连接,或者没有将其添加到创建文件中。手动将其添加到项目树中(即使已经存在)Project-> Add files ...解决了该问题。 感谢@Peter找到解决方案。