Habe eine Klasse Parameter, deren Aufgabe es ist, die Variablen a und b anderen Klassen zur Verfügung zu stellen:
Andere Klassen sollen a, b verändern bzw. auslesen.
Code: Alles auswählen
class Parameter
{
public:
Parameter();
double a = 2, b=3;
};
In mainwindow.cpp rufe ich eine Instanz auf: Parameter par ;
und rufe eine Instanz einer anderen Klasse auf, der als Argument der pointer mitgegeben wird: Klasse1 *Kl1 = new Klasse1(par);
In Kl1 kann ich auf auf a, b zugreifen: z.B. ui->doubleSpinBox_b->setValue(z.b); (Wobei z der pointer ist)
Nun möchte ich den pointer in einer globalen Variablen speichern, sodass jede Klasse auf par zugreifen kann:, und daran scheitere ich tw. :
in mainwindow.h die globale Variable: extern Parameter *globpoint ;
in mainwindow.cpp: globpoint = ∥
in klasse1.h : #include "parameter.h"
in Klasse1.cpp: qDebug()<<"glopointer KL1"<<*&globpoint->b; und das funktioniert. ABER:
Es funktioniert nicht:
Habe noch eine Klasse2 (ohne Argumente) , in der ansonsten dasselbe steht wie in Klasse 1, und dort funktioniert es nicht. (Bekomme irgendeinen zufälligen Wert)
qDebug()<<"glopointr KL2"<<globpoint; liefert zwar den selben Pointer wie par
qDebug()<<"glopointr KL2"<<*&globpoint->b; liefert jedoch irgendeinen zufälligen Wert.
Während ich das geschrieben habe, habe ich herausgefunden:
Klasse2 *Kl2 = new Klasse2(); funktioniert, wenn es innerhalb des Codes von MainWindow::MainWindow(QWidget *parent) : .... aufgerufen wird.
nicht jedoch, wenn es über einen Pushbutton von mainwindow aufgerufen wird. Und für Klasse 1 ebenso.
???
Soll keine Diskussion über bad style - globale Variable sein.
LG
Chri