В основном я пытаюсь наследовать все от трения в базу (или даже наоборот), однако, не идентифицирующие классов я вставил в.Проблемы с наследованием в Qt
base.h
#ifndef BASE_H
#define BASE_H
#include <QMainWindow>
namespace Ui {
class Base;
}
class Base : public QMainWindow{
Q_OBJECT
public:
explicit Base(QWidget *parent = 0);
~Base();
private:
Ui::Base *ui;
};
#endif // BASE_H
friction.h:
#ifndef FRICTION_H
#define FRICTION_H
class Friction : public Base{ // THIS IS WHERE THE ERROR IS
public:
Friction();
};
#endif // FRICTION_H
base.cpp
#include "friction.h"
#include "base.h"
#include "ui_base.h"
Base::Base(QWidget *parent) :QMainWindow(parent),ui(new Ui::Base){
ui->setupUi(this);
}
Base::~Base(){
delete ui;
}
friction.cpp
#include "friction.h"
#include "base.h"
#include "ui_base.h"
Friction::Friction(){
}
и, наконец, main.cpp
int main(int argc, char *argv[]){
QApplication a(argc, argv);
Base w;
w.show();
Friction f;
return a.exec();
}
Я получаю сообщение об ошибке «ожидаемое имя класса, прежде чем„{“лексема», я сократил проект вниз столько, сколько я может и ошибка все еще возникает, и я действительно не знаю, почему.
Я довольно новичок в C++, однако считаю, что наследование не имеет большого значения для базовой программы, но при переходе на Qt я не мог заставить его работать. Я пробовал много вещей об изменении включений и т. Д., Так как я совершенно не замечаю, почему он не идентифицирует класс.
И, возможно, вы забыли '' Q_OBJECT' в Friction' – troyane
О, большое спасибо. Извините за мое невежество, я только начал C++ 2 дня назад. – iyop45
@ user1 Вы должны изучить C++ задолго до изучения Qt. Qt имеет сильные архитектурные парадигмы, основанные главным образом на том, что «moc» может и не может сделать, а это означает, что вы можете изучить довольно искаженный и узкий взгляд на язык. – cmannett85