Object von klasse A in klasse B lesen

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
galilio
Beiträge: 42
Registriert: 19. November 2013 09:16

Object von klasse A in klasse B lesen

Beitrag von galilio » 23. September 2014 13:18

hallo alle zusammen,


folgende Anwendung habe ich:
HeaderFile:
class MainWindow: public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
~MainWindow();
QString getKundeName() const;
void setKundeName(const QString &value);
};
cpp file

MainWindow::MainWindow(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
}

QString MainWindow::getKundeName() const
{
return ui.kundetNumberLineEdit->text();
}

void MainWindow::setKundeName(const QString &value)
{
return ui.kundeNumberLineEdit->setText(value);
}

eine andere Klasse:
#include "MainWindow.h"
class A{
......
public:
void getKundendatenUpdaten();
....
private:
MainWindow * mainwindow;
};
cpp File der klasse A

void A::getKundendatenUpdaten()
{
if(!mainwindow->getKundeName().isEmpty()) // hier tritt eine Fehlermeldung (Object gar nicht initialisiert bzw. = NULL)
{
//Wie soll ich das Object setzen?
//Sorry für die blöde Frage

}
}

....

archer
Beiträge: 306
Registriert: 2. Februar 2006 10:56

Re: Object von klasse A in klasse B lesen

Beitrag von archer » 23. September 2014 13:39

Dein Zeiger mainwindow ist nicht initialisiert bzw, im wurde nichts zugewiesen.
Du könntest deiner Methode einen Zeiger mitgeben.

Code: Alles auswählen

void A::getKundendatenUpdaten(MainWindow * apMainwindow)
{
    if (apMainwindow != NULL) 
    {
        if (apMainwindow->getKundeName().isEmpty() == false) 
        {
        }
    }
}
Oder du mußt über eine andere Methode vorher deiner Membervariablen die Adresse von MainWindow zuweisen.
Nur einen Zeiger deklarieren reicht da nicht aus.

Aber du könntest deiner Klasse A doch einfach den Namen geben, und nicht Klasse den Namen aus Mainwindow holen zu lassen.
Das kannst du ja z.B. durch einen Button Update auslösen.

Code: Alles auswählen

void A::setKundendatenUpdaten(const QString& acrName)
{
    if (acrName.isEmpty() == false) 
    {
    }
}

Antworten