调用定义的函数时,在QT Creator中获取“未定义的引用”

时间:2012-03-10 02:32:49

标签: c++ qt

所以,我正在读这本书:Qt 4的C ++ GUI编程,Jasmin Blanchette的第二版; Mark Summerfield,以学习GUI编程。按照本书的步骤创建一个简单的电子表格应用程序,我得到一个“未定义的引用”  我尝试编译电子表格小部件时出错。

所有错误似乎都来自Cell *Spreadsheet::cell(int row, int column)函数:

Cell *Spreadsheet::cell(int row, int column) const
{
    return static_cast<Cell *>(item(row, column));
}

这是第一个从spreadsheet.cpp抱怨的函数

QString Spreadsheet::formula(int row, int column) const {
    Cell *c = cell(row, column);
    if (c) {
        return c->formula();
    } else {
        return "";
    }
}

Cell *c = cell(row, column);发送错误:/home/axel/QtSDK/Code/Spreadsheet/spreadsheet.cpp:-1:错误:未定义引用`Cell :: Cell()'

cell(row, column)调用的任何地方都会发生这种情况。该函数本身在私有部分的spreadhseet头中定义为:Cell *cell(int row, int column) const;

很抱歉,如果它看起来很乱,我对C ++编程有点新意。

这是我的.pro文件

TEMPLATE = app
CONFIG += console
CONFIG += qt

SOURCES += main.cpp \
           spreadsheet.cpp

HEADERS += \
           spreadsheet.h

如果我遗失了某些内容,我会尽快添加。

谢谢, 阿克塞尔

1 个答案:

答案 0 :(得分:4)

缺少Cell类的定义。它至少应为cell.h,并且应该包含在spreadsheet.cpp中,或者其代码可以直接包含在spresheed.h.cpp中,这可能性较小。无论如何,错误意味着缺少Cell构造函数。