Komisches Konstrukt in der Cpp-Hilfe
-
Ich habe folgendes Konstrukt in der Cpp-Hilfe gefunden
IPAddress^ pAdresse = IPAddress::Parse((((IPEndPoint^)(pClientSocket->RemoteEndPoint))->Address)->ToString());
(pAdresse und pClientSocket sind meine eigenen Variablen)
Da ich in letzter Zeit öfter mal in C# schmöckere (sind einfach mehr Bsp. in der Hilfe) hat das für mich wie ein Cast Äquivalent in C# ausgeschaut.
Da ich in vielen Dingen noch etwas unsicher bin, habe ich den Ausdruck trotzdem mal in meinen Cpp-Code eingefügt und siehe da
es hat funktioniert.Ich habe das Ganze mal übersetzt
IPEndPoint^ pEndPoint = safe_cast<IPEndPoint^>(pClientSocket->RemoteEndPoint); IPAddress^ pIPAdresse = IPAddress::Parse(pEndPoint->Address->ToString());
Auch das funktioniert. Also hatte ich nicht ganz unrecht. Knuddelbaer würde jetzt sagen, akzeptiere es so wie es funktioniert.
Trotzdem würde mich mal interessieren, warum ein C#-Konstrukt auch in Cpp funktioniert. Dann könnte man ja immer das Casting von C# verwenden, so lange man Cpp/Cli Code schreibt. Das ist meiner Meinung nämlich einfacher, denn soviel wie ich bis jetzt mitgekriegt habe, braucht man in C# nicht auf die verschiedenen cast Typen zu achten so wie in Cpp.
Oder bin ich mit meinen Gedanken jetzt total auf dem falschen Dampfer?
Gruss Walter
-
Auch wenn Du mich erschlägst: Schau mal ins Grundlagenbuch unter Casts
(T) => C Style Cast. Im reinen C++ wirkt dieser wir ein reinterpret_cast ; im C++/CLI wie ein safe_cast
Sieh die unterschiedlichen Casttypen in C++ nicht als Strafe sondern als wertvolle hinzugabe. Du kannst exakt ausdrücken was Du willst und das Ergebnis steuern.
(safe_cast wirft eine Exception wenn das Ergebnis nicht stimmt , arbeitet ansonsten wie dynamic_cast. dynamic_cast prüft allerlei ab und liefert null wenn es nicht klappt, static und reinterpret_cast casten einfach.)
Btw.: Je weiter Du kommst um so weniger wirst Du einfach akzeptieren. (Manchmal braucht man A umd B zu verstehen und B um A zu verstehen. Da muss man erst eines akzeptieren. Das Henne und Ei Problem =o)
-
Knuddlbaer danke, das waren ja nur so Gedanken. Ausserdem werde ich mich hüten Dich zu erschlagen, wie sollte ich dann jemals diese Sprache erlernen grgrgr.
Trotzdem der obige Ausdruck ist mir in Cpp bis jetzt noch nicht untergekommen.
Gruss Walter
-
das (T) ?
Naja, das findest Du noch zu genüge in der MSDN
Hier im Forum wirst Du es überwiegend in der AnsiC Ecke finden,
die C++ Style Casts sind einfach hübscher bzw. lassen sich besser lesen.Erschlagen kannst mich schon, solangs nur virtuell ist hab ich genug leben
-
Nein, ich meinte den obigen Ausdruck in meinem ersten Beitrag:
IPAddress^ pAdresse = IPAddress::Parse((((IPEndPoint^)(pClientSocket->RemoteEndPoint))->Address)->ToString());
Das das Casting in Cpp schöner lesen lassen, da muss ich Dir voll zustimmen.
Gruss Walter