Hallo zusammen,
bin nicht so fit, was OOP betrifft und habe gerade ein grundlegendes Verständnisproblem.
Ich schreibe an einem C++/Qt-Programm, mit dem man Daten in Form von Listen ablegt und diese bearbeiten soll. Solange ich mit meinen Daten in einer Klasse arbeite, in der ich diese erschaffen habe, geht das auch alles. Wenn ich diese Daten aber für anderen Klassen zur Verfügung stellen möchte, dann breche ich mir immer einen ab.
Wie macht man das nun sauber?
Dachte mir, ich schreibe ein Klasse (MyContainer), in der ich meine Variablen / Listen ebenfalls erschaffe und in der Funktionen stehen, mit denen ich die Daten in der Klasse A (wo die Daten erschaffen wurden) an meine MyContainer übertrage, dort werden sie gespeichert und wer dann wieder auf diese Daten zugreifen möchte, erschafft ein Objekt der Klasse, zB.
und fordert sie an. Sieht dann so aus:
HEADER
myheader.cpp
Bin mir jetzt aber nicht sicher, ob das so geht oder ob die Daten, sobald aus der Klasse rausgesprungen wird, in der das MyContainer entry; geschaffen wurde, auch meine Daten in MyContainer verloren gehen.
Wie macht man das generell mit Datentransfer? Nur über Funktionen mit Return ist doch irgendwie zu kompliziert, oder?
Gruß, Toxrocks
bin nicht so fit, was OOP betrifft und habe gerade ein grundlegendes Verständnisproblem.
Ich schreibe an einem C++/Qt-Programm, mit dem man Daten in Form von Listen ablegt und diese bearbeiten soll. Solange ich mit meinen Daten in einer Klasse arbeite, in der ich diese erschaffen habe, geht das auch alles. Wenn ich diese Daten aber für anderen Klassen zur Verfügung stellen möchte, dann breche ich mir immer einen ab.
Wie macht man das nun sauber?
Dachte mir, ich schreibe ein Klasse (MyContainer), in der ich meine Variablen / Listen ebenfalls erschaffe und in der Funktionen stehen, mit denen ich die Daten in der Klasse A (wo die Daten erschaffen wurden) an meine MyContainer übertrage, dort werden sie gespeichert und wer dann wieder auf diese Daten zugreifen möchte, erschafft ein Objekt der Klasse, zB.
Code:
MyContainer giver;
und fordert sie an. Sieht dann so aus:
HEADER
Code:
#ifndef MYCONTAINER_H
#define MYCONTAINER_H
#include "candata.h"
#include <qlistview.h>
class MyContainer
{
public:
MyContainer();
~MyContainer();
QPtrList<CanData> getPtrList();
void givePtrList(QPtrList<CanData>);
QListView getInputListView();
void giveInputListView(QListView*);
QListView getOutputListView();
void giveOutputListView(QListView*);
private:
QPtrList<CanData> canDataList;
QListView *inputListView;
QListView *outputListView;
};
#endif
myheader.cpp
Code:
#include "mycontainer.h"
MyContainer::MyContainer()
{
}
MyContainer::~MyContainer()
{
}
QPtrList<CanData> MyContainer::getPtrList()
{
return canDataList;
}
void MyContainer::givePtrList(QPtrList<CanData> list)
{
canDataList=list;
}
QListView MyContainer::getInputListView()
{
return *inputListView;
}
void MyContainer::giveInputListView(QListView *list)
{
inputListView=list;
}
QListView MyContainer::getOutputListView()
{
return *outputListView;
}
void MyContainer::giveOutputListView(QListView *list)
{
outputListView=list;
}
Bin mir jetzt aber nicht sicher, ob das so geht oder ob die Daten, sobald aus der Klasse rausgesprungen wird, in der das MyContainer entry; geschaffen wurde, auch meine Daten in MyContainer verloren gehen.
Wie macht man das generell mit Datentransfer? Nur über Funktionen mit Return ist doch irgendwie zu kompliziert, oder?
Gruß, Toxrocks