Errore di compilazione: expected primary-expression before '.' token



  • Buonasera.
    Evidentemente non capisco come si usano le classi.
    Ho lasciato generare al Qt Creator la banalissima MainWindow ed ho inserito alcuni widget nel form. Quindi ho aggiunto alla classe mainwindow.cpp il seguente metodo per leggere alcuni valori:

    float MainWindow::get_valore (int indice) {
        QString dato;
        if (indice == 1) {
            dato = MainWindow.ui->qt5puntata1->text();
        } else {
            dato = MainWindow.ui->qt5puntata2->text();
        }
        return dato.toFloat();
    }
    

    mentre nella mainwindow.h ho aggiunto la seguente difinizione

        float get_valore (int indice);
    

    Ebbene, il compilatore mi segnala un errore in entrambe le istruzioni che contengono "dato = MainWindow.ui->qt5...".
    Oltretutto sembra un errore poco attinente: eccolo.
    0_1500391597475_Schermata del 2017-07-18 17-26-11.png
    C'è un'anima buona che mi scioglie questo enigma ?
    Molte grazie.
    bvox



  • in C++ c'e' differenza tra l'operatore di accesso (.) e il risolutore di "scope" (::). il primo puo' essere usato solo da istanze della classe. MainWindow.ui e' quindi scorretto, dovrebbe essere MainWindow::ui. la buona notizia e' che, in realta', non c'e' bisogno di complicarsi la vita cosi' tanto visto che lo "scope" e' dedotto. ti basta rimuovere MainWindow. completamente e lasciare ui->qt5puntata1->text().

    P.S.
    Se a qualcuno viene in mente una traduzione adeguata di "scope" fatemelo sapere cosi' correggo la risposta



  • Farò tesoro di questa risposta, ma ancora non va. Corretto quell'errore ne sono scaturiti altri che tenterò di comprendere da solo.
    Moltissime grazie.
    bvox



  • WOW funziona !!!
    Grazie VRonin.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.