Moc в Qt вызывает ошибку "undefined reference to:" - PullRequest
3 голосов
/ 19 июля 2009

Я работаю над простым виджетом рисования в 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 Ответ

10 голосов
/ 19 июля 2009

Это не имеет ничего общего с 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...