Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.4.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Undefine référence

salut tt le monde,

regardez le screen svp.

j'ai la fonction SEBDFRAME dans le .cpp ANCREWIFI et je veux l utiliser dans mainwindow.cpp de mais j ai une erreur comme quoi il ya la reference n est pas defini ?? je fais quoi pour faire un lien entre les deux .cpp
PNG
PNG
Capture.PNG
107K

Réponses

  • Je pense ya que moi qui bosse lol , tt le monde en vacances apparemment ! -_-
  • Il te faut une instance de AncreWifi.
  • @mpergand oui vous avez raison j'ai fait ca
    //...............................................................START.......................................................//

    void MainWindow::on_start_clicked()
    {
    unsigned int lenght;

    //QByteArray frame ;
    Frame[0] = 0x80080005;
    anchor::sendFrame(0,Frame,lenght);
    }
    mais ca m affiche une autre erreur ''cannot call member function void anchor::sendFrame( int , QByteArray sendFrameBuffer, unsigned int ) without objets ??????????? de quels objets il parle ???????
  • anchor est un objet ou un pointeur ?
  • 3 Aug modifié
    @mpergand Anchor est ma class

    dans AncreWIFI.cpp
    void anchor::sendFrame( int num, QByteArray sendFrameBuffer, unsigned int length)
    {
    unsigned int start, stop;
    if( num == 0)
    {
    start = 1;
    stop = NbAnchor;
    }
    else
    {
    start = stop = num;
    }
    for(unsigned int i=start; i<=stop; i++)
    {
    if( (Connected[i] == CONNECTED) || (Connected[i] == CONNECTING) )
    {
    socket.at(i)->write(sendFrameBuffer, length);
    }
    }
    }
    dans
    AncreWIFI.h
    class anchor : public QObject
    {
    Q_OBJECT
    public:
    explicit anchor(QObject *parent = 0);

    signals:
    void setLed(unsigned char nbLed);
    void ackMode(unsigned int);
    void ackStart(unsigned int);
    void ackStop(unsigned int);
    void ackTabTag(unsigned int);

    public slots:
    void Start(void);
    void Stop(void);
    void FrameLife(void);
    void ConfigTag(QByteArray Frame, unsigned int length);
    void ConfigModeAnchor(unsigned int sender, unsigned int receiver);
    void ConfigMode(QByteArray Frame, unsigned int length);
    void sendFrame(int num, QByteArray sendFrameBuffer, unsigned int length);
  • Comme tu ne respectes pas les conventions d'écriture de Qt, c'est un (pénible) dialogue de sourd !
    class anchor : public QObject
    Un nom de classe commence par une majuscule et un nom de méthode par une minuscule.
    et donc quand tu écris anchor dans une méthode, on ne se comprend pas.

    En plus tu es incohérent, tu as des méthodes qui commencent par une majuscule, d'autres non.
    void sendFrame(int num, QByteArray sendFrameBuffer, unsigned int length);
    Ici on a une méthode d'instance, quand tu fais:
    anchor::sendFrame(0,Frame,lenght);
    tu appelles une méthode de classe.
    Mais c'est incompréhensible car tu devrais écrire Anchor::sendFrame()

    Tes objets Anchor, ils sont instanciés/initialisés où ?
  • dans le AnchorWiFI.h
  • Dans MainWindow tu as besoin d'une instance de Anchor pour appeler sendFrame().
    Donc, où est créé cette instance ?
  • @mpergand pour moi le faite de faire ca
    anchor::sendFrame(0,Frame,lenght);
    tu appelle l instance !! c faux ?? sinon oui, vous pouvez me guider svp
  • "anchor" c'est bien le nom de la classe,
    pas une variable ?
  • Normalement c'est une classe ( la meme que dans AncreWifi.cpp )
  • Donc, tu appelles une méthode static de la classe, comme sendFrame n'est pas static, ça marche pas :D
  • ah ouii je pense que ta raison, sur le net j'ai deja trouvé cette reponse -_- .... il ya pas une solution ou une autre methode ?? @mpergand
Connectez-vous ou Inscrivez-vous pour répondre.