erstmal : danke für eure hilfe ;)
nun aber nochmal zum Problem :(
@ MDk *& ist eine Referenz von/auf den übergebenen Pointer .. was sehrwohl funzt
und auch nicht total unüblich ist.Hier die Erklärung wieso ich es nutze:
da ich den Übergebenen Pointer direkt in der Funktion beeinflussen will (zB: alte Klasse löschen,
neue andere! erstellen) nutze ich eine Referenz (wenn du möchtest poste ich mal ein Bsp wieso das wichtig ist)
@ toxic ... direkt in der Klasse definiert Methoden sind nicht immer Inline .. trotzdem thx für
die Idee (hätte es ja sein können)
@ etuli .. vielen dank für deine Mühe ..
zur Alternative.. ja ich weiß das natürlich mit (void*) *g* ...
aber probier das mal mit einer Klasse die ihren eigenen Destruktor mit bringt
... wenn du nämlich via (void*) typcastest übergehts du damit einfach diesen destruktor!
(wäre delete (void*)b ) ...
zum zweiten : nunja ich will ja wie du erkannt hast NICHT die ganze Klasse
mit einem Template versehen sondern nur EINE Funktion der Klasse
(da es ja keine Klassenvorlage werden soll ... hab das auch schon probiert ..
aber es würde GARNICHTS bringen ... da es ja keine Klassenvorlage sein DARF -
da zum Zeitpunkt der definiton der Klassentyp noch nicht bekannt ist ..
was ja bei einer Templateklasse vorraussetzung wäre) .. in der Hilfe steht ja konkret drin wie die
Syntax dazu aussieht (für einzelne Funktionen .. nur halt nicht Funktionen in Klassen) ...
folgendes geht ja :
Code:
template <class X> void killohneklasse(X*x)
{
delete x; // Der richtige Destruktor wird aufgerufen
}
.. kein Fehler ...
Code:
killohneklasse(b); //geht genauso wie
killohneklasse<B>(b);
// aber
c.kill<B>(b); // dachte auch erst .. ach einfach nur <B> vergessen -
// doch der Compi bringt einen anderen Fehler : "B" : Ungültige Verwendung dieses Typs als Ausdruck
[Dieser Beitrag wurde von dynamix am 19. August 2000 editiert.]