Methode aufrufen einer anderen Klasse
-
Ich möchte aus der Klasse MainWindow eine Mthode aufrufen, allerdings befindet sich die Methode in einer anderen Klasse KundeEinzel.
Rufe ich jetzt die Methode auf, indem ein Objekt in der Klasse MainWindow ein Objekt der Klasse KundeEinzel erzeuge, und dann diese Methode aufrufe?Klasse MainWindos
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> //für die SQL-Klassen //außerdem muss in der Projektdatei der Eintrag sql hinzugefügt werden #include <QtSql> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); //stellt die Verbindung zur Datenbank her bool dbVerbinden(); void check(); // benötige Methode private: Ui::MainWindow *ui; //steht die Verbindung zur Datenbank? bool dbVerbunden; //für die Datenbank QSqlDatabase datenbank; //die überschriebene Methode beim Schließen des Fensters protected: void closeEvent(QCloseEvent *event); private slots: //die Slots //sie nutzen den AutoConnect-Mechanismus void on_buttonListenAnzeigeKunde_clicked(); void on_buttonEinzelAnzeigeKunde_clicked(); void on_buttonNeuerEintragKunde_clicked(); void on_buttonListenAnzeigeFahrzeug_clicked(); void on_buttonEinzelAnzeigeFahrzeug_clicked(); void on_buttonNeuerEintragFahrzeug_clicked(); void on_buttonAusleihe_clicked(); void on_buttonRueckgabe_clicked(); void on_buttonReservierung_clicked(); }; #endif // MAINWINDOW_H Methode von der Klasse KundeEinzel void KundeEinzel::check()
-
Wenn Du das Objekt mit
new
erzeugst, musst Du es hinterher mitdelete
wieder löschen:KundeEinzel *check = new KundeEinzel(); check->check(); delete check;
Wenn Du es nur lokal für die eine Methode brauchst, ist der Stack die bessere Option, wo Du Dich ums Löschen nicht zu kümmern brauchst:
KundeEinzel check(); check.check();
-
@M-W43 Nur um sicher zugehen,
dir ist bewusst, dass wenn du irgendwelche Klassenvariablen in check veränderst, veränderst du dies nur hier für die eine Instanz. Alle andere Instanzen von KundeEinzel, die wo anders in deinem code leben, sind davon unbeeinflusst.