Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » pointer wird nicht zurück übergeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.06.2010, 16:06 Uhr
pospiech



In folgendem Code ist der Pointer auf device nach dem Funktionsaufruf noch immer 0 - warum?

C++:
    QMicosPolluxDevice * device = 0;
    bool success = QMicosPolluxDevice::GetStandardDevice("LS65-52mm", device);
    if (success) {
...




C++:
bool QMicosPolluxDevice::GetStandardDevice(QString Name, QMicosPolluxDevice * device)
{
    if (Name == "LS65-52mm"){
        if (!device) {
            device = new QMicosPolluxDevice();
        }
        device->setDescription(Name);
        return true;
    }
    return false;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.06.2010, 16:22 Uhr
Tommix



Hallo,
Du übergibst den Parameter als Kopie, das Original bleibt daher unverändert. Ein Ausweg wäre ein Zeiger auf den Zeiger:

C++:
bool success = QMicosPolluxDevice::GetStandardDevice("LS65-52mm", &device);

bool QMicosPolluxDevice::GetStandardDevice(QString Name, QMicosPolluxDevice ** device)
{
    if (Name == "LS65-52mm"){
        if (!(*device)) {
            *device = new QMicosPolluxDevice();
        }
        (*device)->setDescription(Name);
        return true;
    }
    return false;
}


Gruß, Tommix

Dieser Post wurde am 21.06.2010 um 16:23 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: