casts
-
so ich hab mal ne frage wie sehen in c++ sichere / usichere typumwandlungen aus?
mein eigentlicher grund ist dass ich eine enumeration habe und nun in einer for schleife meinen objekten einen wert daraus zuordnen will so in der art:
[c++]
for(i=0;i<8;i++)
{
Woche[i] = (Wochentag) i;
}
[/c++]
so... ich bin mir nicht mal sicher ob obiges geht aber so würde ich es tun...
ich hab aber mal gelesen dass dieses (typ) variable irgendwie nicht dasx perfekte wäre...irgendwas mit jeder menge eckigen klammern hab ich in erinnerung... kann mich einer aufklären?
-
Du meinst vermutlich die C++-Casts. Such mal nach static_cast, dynamic_cast, reinterpret_cast, const_cast...
-
Meistens (für Standardkonvertierungen) reicht
static_cast.enum Wochentag {...}; Wochentag Woche[7]; for (int i = 0; i < 7; ++i) Woche[i] = static_cast<Wochentag>(i);
-
shisha schrieb:
[c++]
for(i=0;i<8;i++)
{
Woche[i] = (Wochentag) i;
}
[/c++]
so... ich bin mir nicht mal sicher ob obiges geht aber so würde ich es tun...
ich hab aber mal gelesen dass dieses (typ) variable irgendwie nicht dasx perfekte wäre...stimmt. es ist nicht hübsch.
perfekt ist nämlich
[c++]
for(i=0;i<8;i++)
{
Woche[i] = Wochentag(i);
}
[/c++]
-
volkard schrieb:
stimmt. es ist nicht hübsch.
perfekt ist nämlich
[c++]
for(i=0;i<8;i++)
{
Woche[i] = Wochentag(i);
}
[/c++]Na die C++-Tags sind jedenfalls nicht ganz so perfekt.

Ich persönlich finde übrigens die von shisha gepostete typische C-Cast-Syntax am schönsten...
-
_matze schrieb:
Ich persönlich finde übrigens die von shisha gepostete typische C-Cast-Syntax am schönsten...
Wenn man es von irgendwelchen persönlichen Geschmäckern befreit, ist es aber die hässlichste Version.
-
Tachyon schrieb:
_matze schrieb:
Ich persönlich finde übrigens die von shisha gepostete typische C-Cast-Syntax am schönsten...
Wenn man es von irgendwelchen persönlichen Geschmäckern befreit, ist es aber die hässlichste Version.

Über Geschmack lässt sich auf sachlicher, objektiver Ebene also sehr wohl streiten! Hm...

-
_matze schrieb:
Ich persönlich finde übrigens die von shisha gepostete typische C-Cast-Syntax am schönsten...
Aber die frage war nicht nach "schönen" sondern nach "sicheren" Typumwandlungen. Alleine schon die Tatsache das ich nicht nach den Stellen der casts sinnvoll Suchen kann ist für mich ein Argument gegen C-Style Casts [Bei den C++ Casts kann ich das sogar nach Art... und gerade reinterpret_cast und const_cast sind für mich "Alarmsignale", die man immer mal wieder auf Notwendigkeit hin prüfen sollte].
cu André
-
aber dieses alarm-spamming macht dich total unsensibel gegen echte alarmfälle. bestimmt. und mach den code nicht mehr flüssig lesbar. und wie. und entfernt sich von der konstruktorschreibweise und trennt eingebaute von selbstgebauten typen. vielleicht.
-
[quote="asc"]
Aber die frage war nicht nach "schönen" sondern nach "sicheren" Typumwandlungen.Ich habe mich ja auch auf volkards Post bezogen.
asc schrieb:
und gerade reinterpret_cast und const_cast sind für mich "Alarmsignale", die man immer mal wieder auf Notwendigkeit hin prüfen sollte].
Kommt immer drauf an, was man so programmiert. Bei uns sind reinterpretierende Casts an der Tagesordnung (und wirklich notwendig) und so häufig, dass mir erstens der reinterpret_cast den Code einfach unnötig aufblähen würde, und zweitens die Stellen, an denen so gecastet werden muss, jedem hier sowieso völlig klar sind. Die brauchen nicht "gekennzeichnet" und auch nicht überdacht zu werden.
-
_matze schrieb:
Bei uns sind reinterpretierende Casts an der Tagesordnung (und wirklich notwendig) und so häufig, dass mir erstens der reinterpret_cast den Code einfach unnötig aufblähen würde, und zweitens die Stellen, an denen so gecastet werden muss, jedem hier sowieso völlig klar sind. Die brauchen nicht "gekennzeichnet" und auch nicht überdacht zu werden.
ich habe mich mal dazu verleiten lassen, sowas wie
long ptrAsLong(void* p){ return reinterpret_cast<long>(p); }zu bauen. aber ich glaube, dann hab ich's doch nicht benutzt.

-
volkard schrieb:
aber dieses alarm-spamming macht dich total unsensibel gegen echte alarmfälle.
Zumindest bei mir ist die Anzahl der nötigen Umwandlungen relativ gering, ich weiß natürlich nicht wie oder was ihr programmiert. Somit sehe ich hier kein Alarm-Spamming.