auf klasse ausserhalb zugreifen



  • Hallo scheine das mit den Klassen noch nicht so ganz verstanden zu haben 😞
    daher bitte ich um ein wenig Hilfe .
    Ich versuche über eine klasse einen String zu speichern und ihn dann in einem
    neuen Fenster zu öffnen .
    hier mal mein Klasse

    class MBEFEHL 
    {
    
    public:
        MBEFEHL(QString meinBefehl);
    
        ~MBEFEHL();
    QString GetBefehl() { return *denBefehl;}
    void SetBefehl (QString befehl) {*denBefehl = befehl;}
    
    private:
    QCString *denBefehl;
    };
    

    so nun versuche ich nach einbinden meines Headers im ersten Fenster

    void erstesFenster::Button1_Slot()
    {
    befehl1 +=" -s";
    befehl1 +=vh;
    befehl1 +="x";
    befehl1 +=vw;
    befehl1 +=" -vcodec ";
    MBEFEHL ausgabe(befehl1);
    ausgabe.SetBefehl(befehl1);
     if (kLed1->color() == "green"){
    erstesFenster* f1 = new erstesFenster();
              f1->show();
    return;
    }
    

    soweit so gut
    wenn ich aber nun in dem neuen Fester versuche

    QCString B = MBEFEHL->GetBefehl();
    

    funktioniert das leider nicht 😞

    kann mir bitte jemand sagen warum ?
    und vor allen dingen wie ich es anstellen muss
    das ich den gewüschten String geliefert bekomme .

    gruß

    central



  • class MBEFEHL
    {

    public:
    MBEFEHL(QString meinBefehl);

    ~MBEFEHL();
    QString GetBefehl() { return *denBefehl;}
    void SetBefehl (QString befehl) {*denBefehl = befehl;}

    private:
    QCString *denBefehl;
    };

    da steht im Konstruktor QString, aber überall sonst QCString, liegts daran?

    ansonsten warum speicherst du einen Zeiger vom String und nicht den String normal?



  • Ok habe es mal ohne zeiger versucht und den Fehler mit QCString ausgemerzt.
    kann aber leider immer noch nicht auf den String zugreifen .

    MBEFEHL::MBEFEHL ausgabe() ;
    ausgabe.GetBefehl();
    

    wird vom compiler mit

    Fehler: Abfrage des Elementes »GetBefehl« in »ausgabe«, das vom Nicht-Klassentyp »MBEFEHL ()()« ist
    *** Exited with status: 2 ***
    

    quittiert.

    würde mich über Hilfe bzw Anregungen freuen.

    gruß
    central



  • Abgesehen davon, dass du nochmal ein Grundlagentutorial durcharbeiten solltest, weil du offenbar Schwierigkeiten mit der Syntax hast: ausgabe ist in deinem Beispiel eine lokale Variable innerhalb der Methode Button1_Slot. Wenn die Methode beendet ist, ist diese Variable weg, und damit alles, was du damit gemacht hast. Da hilft es auch nicht, wenn du versuchst, in einer anderen Funktion eine andere Variable mit demselben Namen zu erstellen. Beschäftige dich also auch nochmal mit der Lebensdauer von Objekten.


Anmelden zum Antworten