Ich versuche, mir C++ beizubringen, und eine der traditionellen "neuen Sprachübungen", die ich immer benutzt habe, ist die Implementierung einiger Datenstrukturen, wie ein Binärbaum oder eine verkettete Liste. In Java war dies relativ einfach: Ich könnte einen Klassenknoten definieren, der eine Instanzvariable Object data
verwaltet, so dass jemand jedes Objekt in jedem Knoten der Liste oder Struktur speichern könnte. (Später habe ich daran gearbeitet, dies mit Generika zu modifizieren; darum geht es bei dieser Frage nicht.)Behalten Sie Bezug auf irgendeinen Objekttyp in C++?
Ich kann keine ähnliche, idiomatische C++ - Methode finden, um "irgendeine Art von Objekt" zu speichern. In C würde ich einen void
Zeiger verwenden; Das gleiche funktioniert offensichtlich für C++, aber dann stoße ich auf Probleme, wenn ich eine Instanz von std::string
konstruiere und versuche, sie in der Liste/Struktur zu speichern (etwas über eine ungültige Umwandlung von std::string&
bis void*
). Gibt es so einen Weg? Hat C++ eine Entsprechung zu Java Object (oder Objective-Cs NSObject)?
Bonus Frage: Wenn es nicht, und ich muss weiter mit void-Zeigern, was ist die "richtige" Möglichkeit, eine std::string
in eine void*
zu speichern? Ich stolperte über static_cast<char*>(str.c_str())
, aber das scheint irgendwie ausführlich für das, was ich versuche zu tun. Gibt es einen besseren Weg?
Warum wurde diese Frage abgelehnt? –
Ich bin auch daran interessiert zu wissen - ich konnte keinen Betrogenen oder so etwas finden ... – Tim
Das ist wie der alte Witz. Patient: Es tut weh, wenn ich das tue. Doktor: Mach das nicht. Machen Sie in C++ keine Sammlung von "irgendetwas". –