Не работает emit Qt

269
29 июня 2018, 05:50

Пишу этот код не по своей воле - требование преподавателя, заранее извиняюсь за его несуразность.

Есть некоторой базовый класс base, который наследует у класса QObject.

У класса base в свою очередь наследует еще один класс, допустим, game

при попытке emit-нуть сигнал происходят следующие ошибки.

D:\code\untitled18\game.cpp:32: error: undefined reference to `base::show_tree(int)'

file not found collect2.exe:-1: error: error: ld returned 1 exit status

прилагаю код base:

#ifndef BASE_H
#define BASE_H
#include <QObject>
class base : public QObject
{
    Q_OBJECT
public:
    explicit base(QObject *parent = 0);
    void show_tree(int level);
signals:
public slots:
};
#endif // BASE_H
#include "base.h"
#include <iostream>
using std::cout;
base::base(QObject *parent) : QObject(parent)
{
}
void base::show_tree(int level)
{
    QList <base *> list; // лист дочерних объектов
    QString str; // буфферная строка, обеспечивающая совместимость cout и QString
    base * object; // Создание указателя на объект базового класса
    for ( int i = 0; i < level; i++ ) // Задание отступа в соответствии с уровнем заданного объекта
    {
          cout << "-"; // Задание отступа с помощью соответствующего количества пробелов
    }
    str=this->objectName();
    cout << str.toStdString() << "\n"; // Вывод имени объекта
    list = this->findChildren <base*>(); //выгрузка листа дочерних объектов
    if ( !list.isEmpty( ) ) // Проверка наличия дочерних объектов
    {
        QList <base *>::iterator it_child;
        it_child=list.begin();
        while ( it_child != list.end( ) ) // Обход дочерних элементов, пока все не будут пройдены
        {
           object = * it_child; // Задание соответствующему объекту одного из дочерних
           ( *object ).show_tree( level + 1 ); // Построение следующего уровня дерева
           it_child++; // Задание следующего объекта
        }
    }
}

код user_input():

#ifndef USER_INPUT_H
#define USER_INPUT_H
#include <base.h>
class user_input: public base
{
public:
    user_input();
    void input_attempts();
    void execute();
    void new_attempt();
signals:
    void attempt_set(int attempts);
    void attempt_stated(QChar attempt);
};
#endif // USER_INPUT_H

#include "user_input.h"
#include <iostream>
#include <QTextStream>
using std::cin;
using std::cout;
user_input::user_input()
{
}
void user_input::input_attempts()
{
    int attempts;
    cout<<"Vvedite chislo popitok\n";
    cin>>attempts;
   // emit attempt_set(attempts);
}
void user_input::new_attempt()
{
    QChar attempt;
    QTextStream s(stdin);
    cout<<"Ugadayte bukvu";
    attempt = s.readLine()[0];
    emit attempt_stated(attempt);
}

void user_input::execute()
{
    input_attempts();
}
READ ALSO
crypto C++ AES Запечатать в функции

crypto C++ AES Запечатать в функции

Хочу сделать сложное более простымПытаюсь сделать две функции Кодирования и декодирования Строки паролем есть рабочий пример с файлами...

298
Использование FLTK с VSCode

Использование FLTK с VSCode

Помогите с FLTK, которую используют в книге СтрауструпаСкачал FLTK, собрал с помощью make install

204
Работа с очередями и ООП (C++)

Работа с очередями и ООП (C++)

Дан текстовый файл с изображением целых чисел, которые необходимо переписать в очередь Qu1В очередь Qu2 сначала записать числа палиндромы,...

256
C++ Передача списка va_list в функцию

C++ Передача списка va_list в функцию

Подскажите, как реализовать функцию:

238