Je ne sais pas pourquoi j'ai eu ce problème, les fichiers d'en-tête sont juste inclus une fois mais il continue à montrer l'erreur, je vérifie déjà le fichier .pro et chaque SOURCE est juste inclus une fois. Comment puis-je resoudre ceci? Je joindre les fichiers que je utilise et leur inclusion et le code des petitsComment résoudre la définition multiple en Qt?
globals.h
#ifndef GLOBALS_H
#define GLOBALS_H
#include <QtGlobal>
#include "structs.h"
QT_BEGIN_NAMESPACE
struct ListaPaquetes;
QT_END_NAMESPACE
extern ListaPaquetes *nuevoPaquete;
#endif // GLOBALS_H
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtGui>
#include <QDialog>
#include <QtCore>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_startButton_clicked();
void on_planificarProduButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
produccion.h (seulement des premières lignes)
#ifndef PRODUCCION_H
#define PRODUCCION_H
#include <QDialog>
structs.h (onyle premières lignes) Voici les ListaPaquetes struct, qui est le responsable de l'erreur, donc le problème que je suppose dans ce dossier, mais je ne sais pas pourquoi
#ifndef STRUCT_H
#define STRUCT_H
#include <QString>
#include <QList>
struct Nodo
{
int cantidad;
QString tipoPaquete;
Nodo *siguiente;
Nodo *anterior;
Nodo(){}
Nodo (int cant, QString paquete)
{
cantidad = cant;
tipoPaquete = paquete;
siguiente = nullptr;
anterior = nullptr;
}
};
struct ListaPaquetes
{
Nodo *pn;
ListaPaquetes()
{
pn = nullptr;
}
void crearPaquete(int,QString);
QList<QString> paquetesAgregados();
};
void ListaPaquetes::crearPaquete(int cant, QString paquete)
{
if (pn==nullptr)
{
pn = new Nodo(cant, paquete);
pn->siguiente = pn;
pn->anterior = pn;
}
else
{
Nodo *nuevo = new Nodo(cant, paquete);
pn->anterior->siguiente=nuevo;
nuevo->anterior = pn->anterior;
nuevo->siguiente=pn;
pn->anterior = nuevo;
}
}
QList<QString> ListaPaquetes::paquetesAgregados()
{
QList <QString> paquetes;
if (pn!=nullptr)
{
Nodo *tmp = pn;
do
{
paquetes.append(tmp->tipoPaquete);
tmp = tmp->siguiente;
}while(tmp!=pn);
}
return paquetes;
}
#endif // STRUCT_H
globals.cpp
#include "globals.h"
ListaPaquetes *nuevoPaquete = new ListaPaquetes();
principale
. cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QColor>
#include <QColormap>
#include <QtCore>
#include <QtGui>
#include <QMessageBox>
#include "produccion.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_startButton_clicked()
{
if(ui->cantGalletas->text() == "")
{
QMessageBox::warning(this,"Error","Debe introducir una cantidad de
galletas");
}
}
void MainWindow::on_planificarProduButton_clicked()
{
Produccion *ventanaPaquetes = new Produccion();
ventanaPaquetes->show();
}
produccion.cpp (Quand je lance quelque chose d'ici, il montre l'erreur)
#include "produccion.h"
#include "ui_produccion.h"
#include <QtCore>
#include <QMessageBox>
#include "globals.h"
Voici les erreurs:
Pourquoi avez-vous '#include' et '' #include ? Pas que cela fasse une différence, mais ce sont la même chose. Vous ne montrez pas l'erreur dans la question. Quel symbole est défini deux fois? –
nwp
Je suis d'accord avec @ nwp aussi pourquoi vous avez deux inclure: '#include' & '#include ' –
aghilpro
@nwp J'ai déjà ajouter du code et les erreurs, j'espère que vous pouvez m'aider. Aussi, j'élimine le «» et le «» et rien ne change. –