Cześć
Mam taki problem: Klasa1 inicjuje obiekt z Klasa2, natomiast w jednej z funkcji w Klasa2 chce skorzystać z funkcji utworzonej w Klasa1. Gdzieś doczytałem, że powinienem w trakcie kreacji obiektu Klasa2 przekazać mu przez this wskaźnik do Klasa1, zapisać go w zmiennych Klasa2 (np. parent) i gdy będę chciał w obiekcie Klasa2 skorzystać z funkcji Klasa1 to zrobię coś takiego:
parent->funkcja_z_klasa1
czyli kod wygląda mniej więcej tak
klasa1.h: (MainWindow)
class MainWindow: public QMainWindow
{
public:
MainWindow();
public slots:
void showErr(QString);
private:
StackedWidget *centralWidget;
};
klasa1.cpp (MainWindow)
MainWindow::MainWindow() : QMainWindow (0,Qt::Window)
{
//nie ważne
centralWidget = new StackedWidget(this);
//nie ważne
}
void MainWindow::showErr(QString str) {
// tą funkcje potrzebuje wywołać w obiekcie w klasie StackedWidget
}
klasa2.h (StackedWidget)
class StackedWidget : public QStackedWidget
{
public:
StackedWidget(QWidget *parent = 0);
//reszta nie ważna
};
klasa2.cpp (StackedWidget)
StackedWidget::StackedWidget(QWidget *parent) : QStackedWidget(parent)
{
//konstruktor
}
void StackedWidget::p0_loginUser() {
//w tej klasie chce wywołać funkcje z MainWindow
//showErr("komunikat");
}
Próbowałem kombinować z przekazywaniem this w czasie inicjalizacji obiektu StackedWidget, a później wywoływać funkcje showErr bezpośrednio w konstruktorze StackedWidget (dla uproszczenia) ale jakbym tego nie pisał, zawsze wyskakuje jakiś błąd.
Kiedy w MainWindow przekazuje this w konstruktorze StackedWidget, to jaki typ zmienna ma mieć w konstruktorze klasy StackedWidget ?
Gdzieś tam wyczytałem coś takiego StackedWidget::StackedWidget(MainWindow& ptr) ale nie udało mi się tego uruchomić.
Jaka jest prawidłowa droga: chce mieć wewnątrz obiektu dostęp do funkcji klasy która zainicjowała obiekt.
Pomóżcie prosze.
pozdrawiam
Marek