kenshin28
Messages postés5Date d'inscriptionmercredi 23 juillet 2008StatutMembreDernière intervention17 juin 2010
-
1 juin 2010 à 12:07
kenshin28
Messages postés5Date d'inscriptionmercredi 23 juillet 2008StatutMembreDernière intervention17 juin 2010
-
17 juin 2010 à 10:21
Bonjour à tous,
Je travaille avec Qt et me suis fait un petit widget permettant la saisie d'une clé d'enregistrement.
Etant donné que le code doit être propriétaire (je suis en stage), j'ai utilisé l'héritage pour définir un enfant de QLineEdit qui limite le nombre de caractères saisis et passe automatiquement au champ suivant.
Je mets le tout dans un qwidget légèrement modifié pour la navigation dans les champs.
Le problème vient de la compilation : une fameuse
qserialwidget.h:13: ISO C++ forbids declaration of 'QSerialEdit' with no type
qserialwidget.h:13: error: expected ';' before '*' token
Le tout suivi de quelques erreurs qui en découlent.
Cette erreur est la meme que je compile sous windows (XP) ou linux (ZenWalk 6.2).
#ifndef QSERIALEDIT_H
#define QSERIALEDIT_H
#include <QLineEdit>
#include <QWidget>
#include <QKeyEvent>
class QSerialEdit : public QLineEdit
{
Q_OBJECT
int charlength;//nb max de caractères dans le champ
QSerialEdit* next;//champ suivant
protected:
void keyPressEvent ( QKeyEvent *);
public:
QSerialEdit(QWidget * parent=0,int cl=5);
QSerialEdit(QWidget * parent=0);
QSerialEdit(const QSerialEdit &);
void addNext(QSerialEdit *);
};
#endif // QSERIALEDIT_H
Je précise que je suis sur que c'est l'édition de liens qui foirent puisque en faisant quelques modifications qui n'entrainent pas cette erreur de compilation puis en revenant à cette version sans "make clean", ca compile sans problème.
Mais bon ce serait mieux de pouvoir compiler proprement
P.S : si vous voyez quelques autres grossières erreurs qui trainent, merci de me les faire remarquer
kenshin28
Messages postés5Date d'inscriptionmercredi 23 juillet 2008StatutMembreDernière intervention17 juin 2010 2 juin 2010 à 08:51
Rien ne change avec la déclaration, ce qui me semble logique : il n'y pas d'utilisation récursive. (j'avais deja cherché un peu sur le net avant de poster et tester cette solution).
Pour le meme nom de classe : étant donné que ce n'est pas le meme namespace, ca ne devrait pas poser de problème (d'ailleurs c'est juste un renommage, la classe parente s'appelle Ui_QSerialWidget).
Cela ne pourrait-il pas venir des include dans les cpp (ou plutot du manque d'include : je mets juste les headers correspondant) ?
dragonjoker59
Messages postés92Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention23 septembre 2015 16 juin 2010 à 10:52
En tout cas ce n'est pas une erreur de link mais bien de compilation.
As-tu vérifié que QSerialEdit ne fait pas partie d'un namespace comme QSerialWidget ?