Qt的moc导致“未定义引用:”错误

时间:2009-07-19 00:07:56

标签: qt

我正在使用Qt中的一个简单的绘图小部件(以下所有内容都在一个类中)。在头文件中,我已经定义了

private:
QPointF translateToCanvas (QPointF input);

并在CPP文件中定义了

QPointF translateToCanvas (QPointF input) {
    return input - QPointF(CANVAS_MARGIN_X, CANVAS_MARGIN_Y);
}

代码中的其他地方,我用

来调用它
QPointF newPoint = translateToCanvas(anotherPoint);

每当我编译时,它都会给出错误“对MyClass :: translateToCanvas(QPointF)'的未定义引用”,这发生在moc生成的内容中,实际上并不是我的文字代码。

Qt中可能导致此错误的原因是什么? (我正在使用Qt Creator和Qt 4.5。)

1 个答案:

答案 0 :(得分:10)

这与Qt无关。

QPointF translateToCanvas (QPointF input) {
    return input - QPointF(CANVAS_MARGIN_X, CANVAS_MARGIN_Y);
}

定义了一个名为translateToCanvas的独立函数,它与您在类中声明的私有方法无关,除了具有相同的名称。你想要

QPointF MyClass::translateToCanvas (QPointF input) {
     return input - QPointF(CANVAS_MARGIN_X, CANVAS_MARGIN_Y);
}