objekt deklarieren in implementation einer klasse



  • da hagelts aber fehler 😃
    warum eigentlich? wie kann man noch auf member zugreifen?

    void dida::goTimer()
     {     
       TCounter T;
       if(sollichodernicht)
           T.startTimer();
       else T.stopTimer();
     }
    


  • versuchst du danach T nochmal zu benutzen? Weil T wird ja beim verlassen der Funktion wieder gelöscht. Aber versuch am besten mal deine Fehler oder Probleme etwas genauer zu beschrieben, weil so kann man nur vermuten.



  • ich will nach ner abfrage:

    void gui::chancelTimer() {
        sollichodernicht = false;
        boolTimer();
    } 
    
     void gui::startTimer() {
        sollichodernicht = true;
        boolTimer();
    }
    

    obere funktion:

    bool gui::boolTimer()
     {
       TCounter T;
       if(sollichodernicht)
           T.startTimer();
       else T.stopTimer()
         //return sollichodernicht;
     }
    

    ausführen:

    In file included from .ui/form1.cpp:30:
    .ui/../form1.ui.h: In member function `virtual void eagle_gui::startadsl()':
    .ui/../form1.ui.h:33: Warnung: Variable »ok_plug« wird nicht verwendet
    .ui/../form1.ui.h: In member function `virtual void eagle_gui::stopadsl()':
    .ui/../form1.ui.h:42: Warnung: Variable »ok_unplug« wird nicht verwendet
    .ui/../form1.ui.h: In member function `virtual bool eagle_gui::boolTimer()':
    .ui/../form1.ui.h:91: Fehler: `TCounter' undeclared (first use this function)
    .ui/../form1.ui.h:91: Fehler: (Each undeclared identifier is reported only oncefor each function it appears in.)
    .ui/../form1.ui.h:91: Fehler: expected `;' vor "T"
    .ui/../form1.ui.h:93: Fehler: `T' undeclared (first use this function)
    .ui/../form1.ui.h:96: Fehler: expected `;' vor »}«-Zeichen
    make: *** [.obj/form1.o] Fehler 1
    

    in qt-designer ist as mit der implementierung sonne sache, ich versuche in einer klasse eine memberfunktion einer anderen klasse zu starten. in der main funktioniert das auch 😕



  • biber schrieb:

    [cpp]
    bool gui::boolTimer()
    {
    TCounter T;
    if(sollichodernicht)
    T.startTimer();
    else T.stopTimer()
    //return sollichodernicht;
    }
    [/cpp]

    compiler schrieb:

    In file included from .ui/form1.cpp:30:
    .ui/../form1.ui.h: In member function `virtual void eagle_gui::startadsl()':
    .ui/../form1.ui.h:33: Warnung: Variable »ok_plug« wird nicht verwendet
    .ui/../form1.ui.h: In member function `virtual void eagle_gui::stopadsl()':
    .ui/../form1.ui.h:42: Warnung: Variable »ok_unplug« wird nicht verwendet
    .ui/../form1.ui.h: In member function `virtual bool eagle_gui::boolTimer()':
    .ui/../form1.ui.h:91: Fehler: `TCounter' undeclared (first use this function)
    .ui/../form1.ui.h:91: Fehler: (Each undeclared identifier is reported only oncefor each function it appears in.)
    .ui/../form1.ui.h:91: Fehler: expected `;' vor "T"
    .ui/../form1.ui.h:93: Fehler: `T' undeclared (first use this function)
    .ui/../form1.ui.h:96: [u]Fehler: expected `;' vor »}«-Zeichen[/u]
    make: *** [.obj/form1.o] Fehler 1
    


  • das ist mir jetzt schon peinlich 🤡 aber das bleibt

    .ui/../form1.ui.h: In member function `virtual void eagle_gui::startadsl()':
    .ui/../form1.ui.h:33: Warnung: Variable »ok_plug« wird nicht verwendet
    .ui/../form1.ui.h: In member function `virtual void eagle_gui::stopadsl()':
    .ui/../form1.ui.h:42: Warnung: Variable »ok_unplug« wird nicht verwendet
    .ui/../form1.ui.h: In member function `virtual bool eagle_gui::boolTimer()':
    .ui/../form1.ui.h:91: Fehler: `TCounter' undeclared (first use this function)
    .ui/../form1.ui.h:91: Fehler: (Each undeclared identifier is reported only oncefor each function it appears in.)
    .ui/../form1.ui.h:91: Fehler: expected `;' vor "T"
    .ui/../form1.ui.h:93: Fehler: `T' undeclared (first use this function)
    make: *** [.obj/form1.o] Fehler 1
    

    undeclared 😕



  • Wo ist denn TCounter deklariert? Code?



  • tcounter ist eine klasse die ich in lcd.h u. lcd.cpp geschrieben habe in der aktuellen datei, also form.ui.h habe ich lcd.h includiert und in der oberen funktion mit der klasse das objekt "T" erstellt.



  • eigentlich wollte ich nurwissen ob es möglich ist oder nicht!
    mfg 🙂 🙂

    #ifndef stats_h
    #define stats_h
    
    #include <qlcdnumber.h>
    #include <qtimer.h>
    #include "form1.h"
    
    class TCounter : public QLCDNumber
    {
       Q_OBJECT
    
       public:
          TCounter( QWidget * parent = 0, const char * name = 0);
    
          int setTime(int t);
          int getTime();
          void startTimer();
          void stopTimer();
          QTimer timer;
    
      private:
          int timer_value;
    
       public slots:
          void timeout();
    };
    
    #endif //lcd.h
    
    #include "lcd.h"
    #include "form1.h"
    #include <qmessagebox.h>
    
    int TCounter::setTime(int t)
    {
       timer_value = t; 
       display(t);
       return 0;
    }
    
    int TCounter::getTime()
    {
      return timer_value;    
    }
    
    void TCounter::startTimer()
    {
       timer.start(1000, false);   
    }
    
    void TCounter::stopTimer()
    {
       timer.stop();   
    }
    
    TCounter::TCounter( QWidget * parent, const char * name)
       : QLCDNumber(3, parent, name)
    {
       //display(getTime() );
       setDecMode();
       connect( &timer, SIGNAL(timeout()), this, SLOT(timeout()));
       //timer.start(1000, false);
    }
    
    void TCounter::timeout()
    {
       display( intValue() -1);
       if (intValue() == 0) {
          timer.stop();
          QMessageBox::information( this, "Timer", "Timer finished" );
       }
    }
    


  • meine glaskugel sagt du hast in form.ui.h ein ";" hinter der klassen-deklaration vergessen. also:

    [cpp]
    class gui
    {
    ..
    }; // <----------
    [/cpp]

    wenns da nicht ist hast du es irgendwo in der funktion davor vergessen.



  • mmh, wo muss da ein semikolon hin?

    in der main.cpp reicht ja auch ein

    TCounter T;
    

    wie macht man das in eine funktion?

    bool eagle_gui::boolTimer()
     {
       TCounter T;
       if(sollichodernicht)
           T.startTimer();
       else T.stopTimer();
         //return sollichodernicht;
     }
    


  • in der funktion ist nichts falsch.
    die fehlermeldung läst aber darauf schließen das irgendwo ein ";" fehlt. wahrscheinlich in der .h


Anmelden zum Antworten