Übergabeparameter "QObject* = 0"

Alles rund um die Programmierung mit Qt
Antworten
dead-raven
Beiträge: 23
Registriert: 18. Dezember 2008 23:20

Übergabeparameter "QObject* = 0"

Beitrag von dead-raven »

Hallo,

bei meiner Einarbeitung in QT ergibt sich folgende Frage:

Code: Alles auswählen

    public:
        ByteConverter(QObject* = 0);
Was wird in dieser Zeile dem Konstruktor übergeben? Ein nicht deklarierter pointer / pointer ohne Name?


Ganzer Quellcode der Header-Datei:

Code: Alles auswählen

#IFNDEF BYTECONVERTER_H
#DEFINE BYTECONVERTER_H

#include <QObject>

class ByteConverter : public QObject
{
    Q_OBJECT
    
    public:
        ByteConverter(QObject* = 0);
        
    public slots:
        void setDec(const QString&);
        void setHex(const QString&);
        void setBin(const QString&);
        
    signals:
        void decChanged(const QString&);
        void hexChanged(const QString&);
        void binChanged(const QString&);        
};

#ENDIF
vielen Dank!

mfg
DeaD-RaveN
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

em,pfehle ich mal folgendes Video

http://de.youtube.com/watch?v=UvoHwFvAvQE
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Re: Übergabeparameter "QObject* = 0"

Beitrag von pfid »

dead-raven hat geschrieben: Was wird in dieser Zeile dem Konstruktor übergeben?
Ein Pointer des Typs Object*, oder 0, falls der Parameter nicht angegeben wird.
dead-raven
Beiträge: 23
Registriert: 18. Dezember 2008 23:20

Beitrag von dead-raven »

mich irritiert es, dass nach "QObject*" kein name folgt, z.b. "QObject *parent")
Damit würde meines Wissens nach ein Pointer auf die Elternklasse "parent" übergeben werden. Wird deswegen kein Name angegeben, da es keine deklarierte Elternklasse gibt?

Würde demnach bei dem Befehl "void setHex(const QString& = 0);" auch eine NULL übergeben werden, wenn beim Aufruf kein Parameter angegeben wird?
The User
Beiträge: 62
Registriert: 11. Dezember 2008 23:48

Beitrag von The User »

Im Header brauchst du keinerlei Namen, nur in der Definition wird er nötig, um mit ihm auf den Pointer zuzugreifen.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

dead-raven hat geschrieben: [...]
Würde demnach bei dem Befehl "void setHex(const QString& = 0);" auch eine NULL übergeben werden, wenn beim Aufruf kein Parameter angegeben wird?
Nein, das geht bei einer Referenz nicht. Es wird ein temporaerer QString mit dem ersten Konstruktor erstellt, welcher 0 (nicht NULL) als Parameter frisst.. und das ist in diesem Fall "QString(QChar)".

"const QString& x = 0" ist daher gleich "const QString &x = QString((QChar)0)" (Cast dient nur zur Demo). Du kannst also der Doku entnehmen, dass viele weitere Varianten existieren:

Code: Alles auswählen

const QString &x = "hello world" // ergibt QString("hello world")
const QString &x = (QChar)49    // ergibt QString("1")
const QString &x = QString()      // huebscher als "=0" .... oder?
gentlesea
Beiträge: 27
Registriert: 27. März 2008 10:30

Pointer-Video

Beitrag von gentlesea »

AuE, klasse Video. Das muss ich meinen Kommilitonen zeigen :lol:
Antworten