C++ "object missing in reference to..." bei Zugriff auf ein public-Objekt einer Klasse

JetStre4m

Lieutenant
Registriert
Nov. 2007
Beiträge
578
Hallo zusammen, ich hab ein (hoffentlich) kleines Problem beim Zugriff auf ein public-Object einer Klasse vom einer anderen Klasse aus. Hier die Header-Datei:
Code:
#ifndef MyWindow_H
#define MyWindow_H
#include <QtGui>
#include "irrKlang_include/irrKlang.h"
using namespace irrklang;


class MyWindow : public QMainWindow {
     Q_OBJECT
public:
     MyWindow( QMainWindow *parent = 0, Qt::WindowFlags flags = 0 );
     void readin();
     QSlider *slider; //<-auf dieses Objekt soll zugegriffen werden
[...]
};
#endif

Hier die Header-Datei der 2. Klasse:
Code:
#ifndef PLAYTHREAD_H
#define PLAYTHREAD_H
#include <QThread>

class Thread : public QThread
{
    Q_OBJECT
    public:
    Thread();
    protected:
    void run();
};

und hier der problematische code:
Code:
void Thread::run()
{
    MyWindow::slider->setValue(50); //<-Hierauf bezieht sich der 2. Teil der Fehlermeldung
}

Beim Versuch den Code zu kompilieren bekomme ich Folgende Fehlermeldungen:

playThread.cpp: In member function `virtual void Thread::run()':
MyWindow.h:14: error: object missing in reference to `MyWindow::slider'
playThread.cpp:10: error: from this location

ich hab danach gegoogelt, aber nichts gefunden was mir weiterhilft und wäre für schnelle Antworten jeder Art sehr Dankbar:)
 
Ich habe zwar von Qt keine Ahnung, aber rein syntaktisch sieht es für mich etwas merkwürdig aus, wie du auf den QSlider zugreifen willst (nämlich über den Scope-Operator). Dafür müsste dein QSlider nämlich static sein.

Im Normalfall würde man wohl eine konkrete Instanz der MyWindow-Klasse anlegen und dann über den Punktoperator auf den QSlider zugreifen.
 
Das Problem ist, wenn ich die Instanz in der main-Funktion anlege, wie greife ich dann von ner anderen Funktion aus darauf zu? oder geht das nicht? Ist wahrscheinlich ne saudumme Frage aber "wer nicht fragt bleibt dumm"^^
 
Entweder du übergibst eine Referenz auf dein MyWindow-Objekt an andere Klassen, die darauf zugreifen müssen, oder du verwendest eben einen (Meyers-) Singleton (als bessere Alternative zu einem globalen Objekt), von dem es dann allerdings nur eine Instanz geben darf (ob das hier zutrifft musst du selbst wissen, normalerweise hat man ja nur ein Fenster).
 
Zurück
Oben