[gelöst] Methode greift nicht auf Attribut zu.

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
brr
Beiträge: 4
Registriert: 15. September 2010 17:13

[gelöst] Methode greift nicht auf Attribut zu.

Beitrag von brr »

Edit: Sorry. Ich Frage sonst nicht leichtfertig irgendwelche offensichtliche sachen. Ich habe echt zwei Tage gesessen und mich gefragt, warum das nicht geht. Zwei Minuten nach dem ich hier abgeschickt habe war mir das völlig klar.
es muss natürlich
query = new QSqlQuery(db);
statt
QSqlQuery* query = new QSqlQuery(db);
heißen.
Ich habe keine Erklärung dafür, wie ich da auch die Idee kam...
Irgendwie habt ihr mir geholfen, also... Danke :-).


Hallo,
ich habe eine Klasse 'MainForm' und in dieser ein privates Attribut 'QSqlQuery* query' und eine private Methode 'ladeListe()'. Wenn ich in dieser Methode aber auf 'query' zugreife stürzt das Programm ab. Im Konstruktor lasse ich den Zeiger 'query' auf ein QSqlQuery zeigen.
Hier der verkürzte Quelltext:


mainform.h:

Code: Alles auswählen

#ifndef MAINFORM_H
#define MAINFORM_H

#include "ui_main.h"
#include "ui_whinzu.h"
#include "wHinzu.h"
#include <QtSql>
#include <QModelIndex>
#include <QMenu>
#include <QAction>
#include <QPoint>
#include <QContextMenuEvent>

class MainForm : public QMainWindow, private Ui::MainWindow
{
    Q_OBJECT
public:
     MainForm();

private:
     QSqlDatabase db;
     QSqlQuery* query;
     void ladeListe();

};


#endif // MAINFORM_H  
mainform.cpp

Code: Alles auswählen

#include "mainform.h"

MainForm::MainForm()
{
    setupUi(this);

    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("./manager.sqlite");
    db.open();
     // Zu query gibt der Compiler auch eine Warnung,
     // dass des nirgendwo benutzt wird
    QSqlQuery* query = new QSqlQuery(db);
     ladeListe();
}

// Hier stürzt das programm ab
void MainForm::ladeListe()
{
    query->prepare("SELECT [...]"));
    query->exec();
}  
Ich hoffe ich bin im richtigen Forum, ich vermute, dass das Problem nicht wirklich was mit Qt zu tun hat.
Danke im Voraus.
Antworten