我正在构建一个简单的应用程序来解决数独难题。这是我第一次用 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上查看它们。
我发现了一个类似的问题和另一个问题,但他们似乎在编译文件的方式上有问题。在添加我现在有问题的代码之前,我有两个相互引用的类结构相似,并且一切都编译得很好。
我正在使用 Windows 上的 GCC 编译器和作为 IDE 的 CodeBlocks 编译所有内容。
CodeBlocks 以某种方式失去了与 field.cpp 文件的连接或没有添加它创建文件。手动将它添加到项目树中(即使它已经存在) Project->Add files... 解决了这个问题。感谢@Peter 找到解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句