Seite 1 von 1

Übergabeparameter "QObject* = 0"

Verfasst: 19. Dezember 2008 12:20
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

Verfasst: 19. Dezember 2008 12:34
von AuE
em,pfehle ich mal folgendes Video

http://de.youtube.com/watch?v=UvoHwFvAvQE

Re: Übergabeparameter "QObject* = 0"

Verfasst: 19. Dezember 2008 13:47
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.

Verfasst: 19. Dezember 2008 19:25
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?

Verfasst: 20. Dezember 2008 00:00
von The User
Im Header brauchst du keinerlei Namen, nur in der Definition wird er nötig, um mit ihm auf den Pointer zuzugreifen.

Verfasst: 20. Dezember 2008 11:31
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?

Pointer-Video

Verfasst: 20. Dezember 2008 17:31
von gentlesea
AuE, klasse Video. Das muss ich meinen Kommilitonen zeigen :lol: