OT: Nickdiskussion
-
-------------------------- /| /| | | ||__|| | Trolle bitte | / O O\__ nicht | / \ füttern! | / \ \ | / _ \ \ ---------------------- / |\____\ \ || / | | | |\____/ || / \|_|_|/ | __|| / / \ |____| || / | | /| | --| | | |// |____ --| * _ | |_|_|_| | \-/ *-- _--\ _ \ // | / _ \\ _ // | / * / \_ /- | - | | * ___ c_c_c_C/ \C_c_c_c____________
-
Shade Of Mine schrieb:
Undertaker schrieb:
sollte so typsicher sein, wie ein dynamic_cast
Mal ehrlich: manchmal weiß ich nicht ob du dich lächerlich machen willst oder trollen willst. Jedenfalls ernst nehmen kann dich keiner...
Wenn du das selbst gemacht hättest, wärs cool, aber mit so na billigen Anleitung. Gähn.
-
Wie's
typeid
macht ist IMHO nicht Standardisiert -> Jeder Compiler darf sein eigenes Süppchen kochen...greetz, Swordfish
-
Swordfish schrieb:
Wie's
typeid
macht ist IMHO nicht Standardisiert -> Jeder Compiler darf sein eigenes Süppchen kochen...ich hab's grad' mal ausprobiert:
class A {}; class B : public A {}; int main () { B *b = new B; if (typeid(B) == typeid(*b)) cout << "b is a B" << endl; if (typeid(A) == typeid(*b)) cout << "b is also an A" << endl; }
scheint zu klappen.
aber wenn es so ist wie du sagst, könnte es dann auch compiler geben, die den zweiten vergleich durchlassen?
-
Du tust jedenfalls nicht das gleiche wie dynamic_cast.
Nimm Klasse A, erbe davon Klasse B und davon nochmal Klasse C. Wenn Du jetzt einen A-Pointer auf ein C-Objekt hast, dann macht dynamic_cast dir auch nen schönen cast auf B. Aber die Variante mit typeid schlägt fehl.
-
Jester schrieb:
Du tust jedenfalls nicht das gleiche wie dynamic_cast.
Nimm Klasse A, erbe davon Klasse B und davon nochmal Klasse C. Wenn Du jetzt einen A-Pointer auf ein C-Objekt hast, dann macht dynamic_cast dir auch nen schönen cast auf B. Aber die Variante mit typeid schlägt fehl.richtig, aber dafür müsste 'typeid' geschwindiglkeitsmässig eine rakete sein, im vergleich zu 'dynamic_cast'.
wenn man ein objekt wieder in seinen ausgangstyp zurückcasten will, dann müsste ein check mit 'typeid' und danach ein einfacher cast doch optimal sein, weil eben nicht die gesamte vererbungsstruktur durchsucht wird.
-
Undertaker schrieb:
richtig, aber dafür müsste 'typeid' geschwindiglkeitsmässig eine rakete sein, im vergleich zu 'dynamic_cast'.
wenn man ein objekt wieder in seinen ausgangstyp zurückcasten will, dann müsste ein check mit 'typeid' und danach ein einfacher cast doch optimal sein, weil eben nicht die gesamte vererbungsstruktur durchsucht wird.
Für "Fehlerfälle" - ja. Aber wenn du sowieso den richtigen Typen verwendest, musst dynamic_cast ja auch nicht die komplette Hierachie durchlaufen sondern matcht sofort den ersten Typen.
Ein Fehlerfall ist dann natürlich schneller - aber er macht ja auch etwas komplett anderes. Äpfel und Birnen, du weißt.
-
Ich könnte mich ja irren, aber sind C++-Diskussionen in Neuigkeiten nicht eigentlich OT???
-
Da 6 (in Worten: Sechs) Moderatoren mitdiskuttieren, irrst Du bestimmt.
greetz, Swordfish
-
Marc++us schrieb:
Ich könnte mich ja irren, aber sind C++-Diskussionen in Neuigkeiten nicht eigentlich OT???
im c++ forum gelten solche diskussionen als pure blasphemie. dann kommt der CStoll daher und schmeisst mich wieder raus...
Swordfish schrieb:
Da 6 (in Worten: Sechs) Moderatoren mitdiskuttieren...
oh, sind Artchi und Mr.N gerade zu moderatoren ernannt worden?
-
Undertaker schrieb:
Swordfish schrieb:
Da 6 (in Worten: Sechs) Moderatoren mitdiskuttieren...
oh, sind Artchi und Mr.N gerade zu moderatoren ernannt worden?
Nö, hab' mich aber verzählt: 7 (CStoll, nman, Tim, estartu, SideWinder, Jester, Shade Of Mine)
greetz, Swordfish
PS: Kann jetzt bitte einer dieses Rumgetrolle beenden!?
-
Swordfish schrieb:
PS: Kann jetzt bitte einer dieses Rumgetrolle beenden!?
Wieso? Stört doch keinen solange alles in diesem Thread bleibt und ich finds lustig.
-
Ben04 schrieb:
Swordfish schrieb:
PS: Kann jetzt bitte einer dieses Rumgetrolle beenden!?
Wieso? Stört doch keinen solange alles in diesem Thread bleibt und finds lustig.
Da schliesse ich mich an. Und ich habe sogar einen Vorschlag für Undertaker oder wie auch immer er nun genannt werden will. Falls du dann wieder einen neuen Nick brauchst, wie wäre es mit Hofnarr?
Grüssli
-
Dravere schrieb:
Da schliesse ich mich an. Und ich habe sogar einen Vorschlag für Undertaker oder wie auch immer er nun genannt werden will. Falls du dann wieder einen neuen Nick brauchst, wie wäre es mit Hofnarr?
Dem schließe ich mich an.
-
@Undertaker: Du kannst natürlich gerne einen eigenen direct_cast<> erstellen, der mit den typeid's arbeitet. Aber damit wirst du doch sehr unflexibel. Und im Endeffekt läuft das Problem doch wieder darauf hinaus, den Compiler an irgendwelche Typinformationen zu erinnern, die du vorher über Bord geworfen hast (und egal, welchen Cast du verwendest - sowas deutet fast immer auf fehlerhaftes Design).
PS: Und den Namen "Hofnarr" können wir gerne für dich reservieren
-
Wären es nicht lediglich zwei kleine SQL-Befehle, einen vorher reservierten Namen jedes Mal seiner momentanen Inkarnation zuzuweisen? :p
-
árn[y]ék schrieb:
Wären es nicht lediglich zwei kleine SQL-Befehle, einen vorher reservierten Namen jedes Mal seiner momentanen Inkarnation zuzuweisen? :p
Technisch wäre das kein Problem. Aber die Angemessenheit solcher Schritte hat wohl nicht unbedingt etwas damit zu tun, wie sehr mir jemand auf die Nerven geht.
-
Deshalb ja auch der Smiley
-
Hofnarr ist schon prima, aber nicht als User-Nick, sondern als Benutzerklasse. Wenn Marc++us sich die Mühe machen will.
-
CStoll schrieb:
@Undertaker: Du kannst natürlich gerne einen eigenen direct_cast<> erstellen, der mit den typeid's arbeitet. Aber damit wirst du doch sehr unflexibel.
es muss ja nicht flexibel sein, sondern nur den originaltyp zurückholen.
ich würde ihn 'dream_cast<>' taufenCStoll schrieb:
Und im Endeffekt läuft das Problem doch wieder darauf hinaus, den Compiler an irgendwelche Typinformationen zu erinnern, die du vorher über Bord geworfen hast
wenn sie wirklich weggeworfen wurden, dann könnte man sie ja nicht wieder hervor kramen. also wirklich weg sind sie nicht, mir scheint nur C++ hat leichte probleme, damit vernünftig umzugehen.
CStoll schrieb:
(und egal, welchen Cast du verwendest - sowas deutet fast immer auf fehlerhaftes Design).
das gilt für C++ wegen: 'siehe oben'
Joe_M. schrieb:
Hofnarr ist schon prima, aber nicht als User-Nick, sondern als Benutzerklasse.
und was ist mit neuanmeldungen? startet man dann gleich mit 'hofnarr'?