Casting Problem

CodeFatal

Erfahrenes Mitglied
Hi ich schon wieder,
in dem Thread http://www.tutorials.de/tutorials150352.html&highlight=SetItemData findet man irgendwo einen ähnlichen Ausdruck
Code:
m_ListAktionen.SetItemData( i, ((DWORD)( new CString( strTemp ))) );
Im Endeffekt alles klar nur leider will mein Compiler das nur wieder willen Casten.
hab das schon auf Void und sonst wohin gedreht aber Warning bleibt warning.

hat da jemand noch nen plan was ich dagegen machen kann? Das teil sollte zwar keinen Fehler geben aber schön ist es nicht.

Gruss Michael
 
Hi.

Du kannst ja mal versuchen das in einen DWORD_PTR zu casten - so steht der Parametertyp jedenfalls in der MSDN.

Allerdings solltest du vom Casten im alten C-Stil Abstand nehmen und lieber static_cast etc. verwenden.

Gruß
 
Danke der Tip war mal wieder goldrichtig.
Verstehen tu ich es aber nicht. Das wird doch auch nur wieder durch DWORD ersetzt...
Naja so ist wenigstens die Meldung weg:-)

Zu deinem Tip: was bitte sind static_cast :confused: Und was passiert da genau, bzw. wo sind die Unterschiede zu meinem Casting?

Gruss Michael
 
Also in C++ gibt es (neben dem immer noch unterstützten alten C-Cast) spezielle Cast Operatoren:

static_cast<> ()
const_cast<> ()
reinterpret_cast<> ()
dynamic_cast<> ()

Der erste ist wohl der meistverwendete und überlicherweise statt dem C-Stil Cast zu benutzen.

Mit dem const_cast kann man den const-Modifizierer eines Typs "weg-casten" - allerdings sollte man das nur tun, wenn man sich sicher ist das es auch geht:
Code:
string str = "blah";

const string& str_ref = str;

str_ref += '.'; // Fehler!
const_cast<string&>(str_ref) += '.'; // ist OK! der Wert von str ist jetzt "blah."

reinterpret_cast sollte man für unsichere Casts verwenden (z.B. von einem int auf einen Pointer) die normalerweise nicht portabel sind.

dynamic_cast ist nützlich um bei Pointern oder Referenzen von polymorphen Objekten in der Klassenhierarchy nach unten zu casten (downcast). Wirft eine std::bad_cast Ausnahme wenn das Casten fehlschlägt.

Der Vorteil dieser Operatoren ist, das sie genau eine Sache tun (z.B. const entfernen) und nicht mit der Holzhammermethode vorgehen. Außerdem kann man gezielt im Code nach solchen stellen suchen und es ist leichter Fehler im Code zu identifizieren.

Am besten besorgst du dir mal ein schönes Buch über C++ wo du das alles noch besser nachlesen kannst.

Gruß
 
Danke für die Info. Da zeigt sich wer vernünftig programmiert und wer nicht :-)
Scheinen ja echt mächtig zu sein.

Gruss Michael
 
Zurück