Gültigkeit der Übergabe - const&

Folgendes Beispiel liefert unerwartete Ergebnisse:

void rotateXRad(const double& angle); 

void rotateX(const double& angle) 
{ 
 rotateXRad(angle\*PI/180.0); 
}; 

Und so funktionierts:

void rotateXRad(const double& angle); 

void rotateX(const double& angle) 
{ 
 double tmpAngle=angle\*PI/180.0; 
 rotateXRad(tmpAngle); 
}; 

Woran es liegt ist mir schon klar - das temporäre Objekt
welches als Referenz an rotateXRad übergeben wird, wird
anscheinend gleich wieder zerstört (bevor der Funktionsaufruf
beendet ist). Ich frage mich nur ob es korrekt ist das das
temporäre Object das für angle*PI/180.0 erzeugt wurde zerstört
wird, bevor die Zeile komplett abgearbeitet wurde.
Compiler ist gcc3.3

Weiß jemand wie genau der Standard dazu aussieht?

Gruß Ben

Ich liegt da vielleicht falsch.

du vergibts da ein Konstante ein Wert,
dann übergibts du mit der Adresse…

Mein wissen nach kann doch die Werter eines Konstants(richtig geschrieben???) nicht geändert werden oder nicht!!!

du vergibts da ein Konstante ein Wert,
dann übergibts du mit der Adresse…

Mein wissen nach kann doch die Werter eines Konstants(richtig
geschrieben???) nicht geändert werden oder nicht!!!

Der Wert der Konstante wird ja auch gar nicht geändert.
Dieses Argument:

 angle\*PI/180.0 

sollte theoretisch eine temporäre Variable erzeugen die das
Ergebnis hält. Dies sollte dann als Argument der Funktion
rotateXRad verwendet werden, welche eine const& als Als
Argument erwartet. Ein Problem taucht also nur dann auf, wenn
die temporäre Variable zerstört wird, bevor ich die Funktion
aufrufe, d.h. der Speicherbereich auf den sie zeigt ungültig
wird.

Gruß Ben

Da dein Funktion bei der übergabe an die unterfunktion noch nicht beendet ist, existiert also dein Speicher noch.

erst beim beenden von dein Funktion,
gibst du dann diesen Speicher Frei.

Überprüfe mal die Übergabe mit den Adressen.
Kann sein dass du bei der Übergabe nicht richtig gemacht hast.

unterfunktion(*speicher)

Muss es nicht so oder übergeben werden???(Oder in ein andere Form)

Da dein Funktion bei der übergabe an die unterfunktion noch
nicht beendet ist, existiert also dein Speicher noch.

erst beim beenden von dein Funktion,
gibst du dann diesen Speicher Frei.

Überprüfe mal die Übergabe mit den Adressen.
Kann sein dass du bei der Übergabe nicht richtig gemacht

hast.

unterfunktion(*speicher)

Muss es nicht so oder übergeben werden???(Oder in ein andere
Form)

Jetzt funktioniert es. Anscheinend war irgend etwas beim
compilieren durcheinander geraten, nach einem make clean leif
alles.

Gruß Ben