Пишу этот код не по своей воле - требование преподавателя, заранее извиняюсь за его несуразность.
Есть некоторой базовый класс 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();
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости