J'essaie d'utiliser Qt avec C++. J'utiliserais QT pour programmer en Python avant.Déclaration en avant dans le projet Qt
mon test simple ne fonctionne pas. Ceci est mon fichier tour.h:
#ifndef TOUR_H
#define TOUR_H
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QTableView>
class TourTable;
class Tour : public QMainWindow
{
Q_OBJECT
public:
Tour();
/*protected:
void closeEvent(QCloseEvent *event);
private slots:
void newCompetitor();
void remCompetitor();
void finalReport();
void openPage();
void savePage();
void reloadTitle();*/
private:
TourTable _table;
};
class QStandardItem;
class QStandardItemModel;
class TourTable : public QTableView
{
Q_OBJECT
public:
TourTable();
/* bool isChanged();
QString windowName();
void finalReport();
void newCompetitor();
void remCompetitor();
bool savePage();
void setChanged(bool value);
void openPage();
protected:
void itemChanged(QStandardItem item);
private:*/
// bool _secondBetter(p1, p2);
Tour _parent;
// QStandardItemModel _model;
// bool _saved;
// bool _changed;
};
#endif
je l'avais fait remarquer presque tout dans ce code pour isoler le problème, mais je ne sais toujours pas ce qui cause cela. C'est mon premier essai en C++.
Le message d'erreur est:
tour.h:28:12: error: field ‘_table’ has incomplete type ‘TourTable’
TourTable _table;
^~~~~~
tour.h:7:7: note: forward declaration of ‘class TourTable’
class TourTable;
quelqu'un peut me aider à résoudre cela?
Puisque vous déclarant 'classe TourTable' dans un même fichier il n'y a pas besoin de' declaration' avant, vous pouvez pousser 'TourTable' avant de déclarer la classe' Tour'. –
Cela ne fonctionnera pas car il a une référence Tour dans la classe TourTable – demonplus
Ce que vous devez faire est d'utiliser TourTable * _table; Vous serez en mesure de construire l'objet plus tard dans le fichier cpp – demonplus