[C++][Qt]Erreur: ISO C++ forbids defining types ...

Erreur: ISO C++ forbids defining types ... [C++][Qt] - C++ - Programmation

Marsh Posté le 23-12-2004 à 02:05:43    

Salut, je commence un projet avec Qt et j'ai un petit souci.
Pour l'instant je veux juste faire une fenetre pour pouvoir charger une image.
Je défini donc mon type Fenetre dans fenetre.h à partir du type QMainWindow de Qt:
 

Code :
  1. #ifndef FENETRE_H
  2. #define FENETRE_H
  3. #include<qwidget.h>
  4. #include<qmainwindow.h>
  5. class Fenetre : public QMainWindow
  6. {
  7. public:
  8. Fenetre(QWidget *parent=0, const char *name=0);
  9. ~Fenetre()
  10. QPushButton *OpenBut;
  11. QPushButton *QuitBut;
  12. }
  13. #endif


 
Et je déclare mon type dans fenetre.cpp:
 

Code :
  1. #include<qpushbutton.h>
  2. #include<qpoint.h>
  3. #include"fenetre.h"
  4. Fenetre::Fenetre(QWidget *parent, const char *name)
  5.   : QMainWindow(parent, name)
  6. {
  7.   OpenBut = new QPushButton(this, "OpenBut" );
  8.   QuitBut = new QPushButton(this, "QuitBut" );
  9.   resize(450, 420);
  10.   setCaption("Maestro" );
  11.   OpenBut->setText("Open" );
  12.   QuitBut->setText("Quit" );
  13.   OpenBut->move(QPoint(10, 30));
  14.   QuitBut->move(QPoint(10, 80));
  15.   connect(QuitBut, SIGNAL(clicked()), this, SLOT(quit()));
  16. }
  17. Fenetre::~Fenetre()
  18. {
  19. }


 
 
Et enfin mon main.cpp:
 

Code :
  1. #include<qapplication.h>
  2. #include"fenetre.h"
  3. int main(int argc, char **argv)
  4. {
  5.   QApplication maestro(argc, argv);
  6.   Fenetre MainWin;
  7.   MainWin.show();
  8.   return maestro.exec();
  9. }


 
 
Le code me parait assez clair et pourtant lors de la compilation je me prends:
 

Code :
  1. ...
  2. fenetre.cpp:8: error: ISO C++ forbids defining types within return type
  3. fenetre.cpp:8: error: return type specification for constructor invalid
  4. ...


 
 
Je débute en C++ et je vois pas mon erreur, si vous pouviez m'aider  :hello:


Message édité par Player_One le 23-12-2004 à 02:06:53

---------------
640K ought to be enough for anybody.
Reply

Marsh Posté le 23-12-2004 à 02:05:43   

Reply

Marsh Posté le 23-12-2004 à 08:59:46    

Il manque un point-virgule à la fin de la déclaration de ta classe.

Reply

Marsh Posté le 23-12-2004 à 09:10:34    

ce sont les seules erreurs que tu te prend ? il n'y en a pas d'autres avant ?
[edit] exact ... il manque le ;


Message édité par mout_de_raisin le 23-12-2004 à 09:11:33
Reply

Marsh Posté le 23-12-2004 à 09:17:17    

mout_de_raisin a écrit :

ce sont les seules erreurs que tu te prend ? il n'y en a pas d'autres avant ?
[edit] exact ... il manque le ;


A vrai dire, sans même regarder son code, j'aurais pu te dire que c'était ça l'erreur. C'est typique.  
 
Mais il manque quand même une:

blabla.cpp:16:error: semicolon missing after declaration of Fenetre


Quoiqu'il est possible qu'elle arrive après, pour des raisons d'arbre syntaxique...


Message édité par Lam's le 23-12-2004 à 09:17:32
Reply

Marsh Posté le 23-12-2004 à 10:30:26    

C'est bon a savoir ... si jamais j'ai cette erreur une fois, je me souviendrais de ta remarque... Ca ne m'est jamais encore arrive d'oublier ce point virgule la ... mais je suis persuade que le jour ou ca m'arrivera, je mettrais un temps fou pour trouver ... plus c'est con et evident et plus je galere pour trouver la merdouille...

Reply

Marsh Posté le 23-12-2004 à 11:11:45    

Il manque aussi un ; après la définition de ~Fenetre()

Reply

Marsh Posté le 23-12-2004 à 11:40:19    

Il manque une forward declaration de QPushButton  dans Fenetre.h aussi. Ajoute

Code :
  1. class QPushButton;


juste au dessus de ta classe. Je pense aussi qu'inclure <qwidget.h> n'est pas nécessaire car déjà fait par <qmainwindow.h>.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 23-12-2004 à 14:19:06    

Lam's a écrit :

Il manque un point-virgule à la fin de la déclaration de ta classe.


merci, c'était bien ça  :jap:  
 
Kristoph: c'est juste une erreur de recopie
 
HelloWorld: je tiens compte de ta remarque aussi  :jap:


---------------
640K ought to be enough for anybody.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed