ClassenName blub oder ClassenName* blub
-
moin..
ich hab im qt tutorial wieder mal einen "ClassenName* blub" code gesehn:
int main(int argc, char *argv[]) { QApplication app(argc, argv); QSplitter *splitter = new QSplitter; QDirModel *model = new QDirModel; QTreeView *tree = new QTreeView(splitter); tree->setModel(model); tree->setRootIndex(model->index(QDir::rootPath())); QListView *list = new QListView(splitter); list->setModel(model); list->setRootIndex(model->index(QDir::rootPath())); splitter->setWindowTitle("Two views onto the same directory model"); splitter->show(); return app.exec(); }vor kurzem hab ich aber gelesen, dass pointer boese sind
http://new-brunswick.net/workshop/c++/faq/big-picture.html#faq-6.15
http://www.parashift.com/c++-faq-lite/freestore-mgmt.htmlwas ist denn nun richtig / besser?
und warum?mfg aman..
-
Ich glaube das verlangt sogar QT das die Objekte auf dem Heap liegen damit QT die Objekte selbst mit "delete this" freigeben kann.
-
nein, ich kanns ja auch ohne probs so machen:
int main(int argc, char *argv[]) { QApplication app(argc, argv); QSplitter splitter; QDirModel model; QTreeView tree(&splitter); tree.setModel(&model); tree.setRootIndex(model.index(QDir::rootPath())); QListView list(&splitter); list.setModel(&model); list.setRootIndex(model.index(QDir::rootPath())); splitter.setWindowTitle("Two views onto the same directory model"); splitter.show(); return app.exec(); }mfg aman..
-
Ohne Segmentation Fault am Programmende?

Beim Ableben von splitter räumt Qt IMHO alle ihm als Child zugewiesenen Objekte mit delete auf (will heissen alle die splitter im Konstruktor übergeben bekommen). Das kann im laufenden Programmfluss zu sagen wir mal unschönen Effekten führen

-
jo, es geht (ohne segmentation fault), aber ich verstehe, was du meinst.
hm, in nem anderen tut (http://doc.trolltech.com/4.1/tutorial-t3.html) wird es auch mit dem dereferenzierungsop. gemacht.
wie sollte ich denn toplevel widgets (fenster) machen?
oder ist das geschmackssache?
mfg aman..