对另一个类的成员的函数的未定义引用

时间:2019-02-13 09:25:03

标签: c++ codeblocks

我正在构建一个简单的应用程序来解决数独难题。这是我第一次使用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.cppfield.cpp,它们定义了cell_group.hfield.h中的类。

不幸的是,由于所有文件都有很多行,因此我无法设法将所有文件都放在一个问题中,但是您可以在我的github上查看它们。

我找到了similar questionanother one,但是它们似乎在编译文件的方式上存在问题。在添加我现在遇到问题的代码之前,我已经有两个互相引用结构相似的类,并且一切都编译良好。

我正在使用Windows上的GCC编译器以及作为IDE的CodeBlocks编译所有内容。

1 个答案:

答案 0 :(得分:0)

CodeBlocks以某种方式失去了与field.cpp文件的连接,或者没有将其添加到创建文件中。手动将其添加到项目树中(即使已经存在)Project-> Add files ...解决了该问题。 感谢@Peter找到解决方案。