Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++:Was ist der Unterschied: void func(**a)-void func(*(&a)) (https://www.delphipraxis.net/104434-c-ist-der-unterschied-void-func-%2A%2A-void-func-%2A.html)

sniper_w 4. Dez 2007 07:37


C++:Was ist der Unterschied: void func(**a)-void func(*(&
 
Hi,
Ich weiss ja was folgende Deklaration bedeutet und wie man es benutzt:
Code:
void func(myClass **instance)
In Delphi wäre es
Delphi-Quellcode:
procedure func(var instance: myClass);
In diesem Fall könnte man wikrungsvoll das Objekt innerhalb der Funktion löschen (dessen Destructor aufrufen) und die Variable instance auf nil/NULL setzten. z.B.:
Code:
void func(myClass **instance)
{
   delete *instance;
   *instance = NULL;
}
Wie würde ich dasselbe machen, wenn die Funktion so aussehen würde:
Code:
void func(myClass *(&instance))
{

}

SirThornberry 4. Dez 2007 09:39

Re: C++:Was ist der Unterschied: void func(**a)-void func(*(
 
ich würde sagen genau so. allerdings würde ich vorher mal debuggen ob my class bei beiden Varianten den gleichen wert hat.

Ich könnte mir auch vorstellen das bes bei Variante 2 nicht geht weil:
&instance gibt eventuell die Adresse von Instance auf dem Stack zurück.

OregonGhost 4. Dez 2007 09:42

Re: C++:Was ist der Unterschied: void func(**a)-void func(*(
 
Suchst du nicht eher
Code:
void func(myClass*& instance)
{
    delete instance;
    instance = 0;
}
?

So wird eine Referenz auf einen Zeiger übergeben. Halte ich zwar nicht unbedingt für gängige Praxis (man benutzt eigentlich entweder Zeiger oder Referenzen, eher selten beides), aber sollte so funktionieren. Mein Compiler akzeptiert das jedenfalls.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz