@Nicky23

Как избавиться от ошибки undefined reference to?

Добрый день! У меня такая проблема:
В первом проекте я использовал сигналы и слоты:
Файл .h:
// Код...
Q_OBJECT
signals:
    signal1();
    signal2();
// Код...

В файле .cpp я просто в нужный момент беру и вызываю их. И всё хорошо работает.

Но во втором проекте у меня есть два класса, один родительский, без интерфейса, а другой дочерний, с интерфейсом. Т.е. в родительском классе я не использую Q_OBJECT, а даже если и написать его, будет ошибка... Создаю я несколько сигналов в родительском классе, потом создаю дочерний от него класс:
class Parent
{
signals:
    signal1();
    signal2();
protected:
    // Методы, в которых я вызываю сигналы

В дочернем классе:
class Child : public Parent
{
Q_OBJECT
// Код...
}


Когда запускаю появляется ошибка:
undefined reference to 'Parent::signal1()'
undefined reference to 'Parent::signal2()'
  • Вопрос задан
  • 1304 просмотра
Решения вопроса 1
IGHOR
@IGHOR Куратор тега Qt
Qt/C++ DEV/CTO
Чтобы сигнал слоты работали, как раз и обязательно чтобы класс был наследником QObject или наследником любого наследника QObject. Так же нужен макрос Q_OBJECT там где используются секции signals или slots. Так же у вас пропущен тип в именах сигналов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@26rus_mri
при аналогичной проблеме мне помогло удаление папки билда и очистка проекта
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы