Vererbung von Klassen aus std ::

Es gibt viele ähnliche Fragen und ich habe sowohl pro als auch gegen Gründe gefunden, dieses Muster zu verwenden. Deshalb stelle ich dies hier:

Ich muss eine JSON-Implementierung in C ++ vornehmen (sagen wir, es ist eine Art Hausaufgabe). Ich dachte, es so zu machen:

namespace JSON {
  class JSON { };
  class object : public JSON, public std::unordered_map<std::string,JSON> { };
  class vector : public JSON, public std::vector<JSON> { };
  class string : public JSON, public std::string { };
  ...
};

Wenn Sie darüber nachdenken, ergibt alles einen Sinn. Das JSON-Objekt "ist eine" ungeordnete Zuordnung, der JSON-Vektor "ist ein" Vektor und so weiter. Nur dass sie auch ein JSON-Wert sind und beispielsweise ein JSON-Vektor beliebige JSON-Werte (Objekte, Vektoren, Zeichenfolgen usw.) enthalten kann. Sie haben auch viele Vorteile, Sie können dann einfach den JSON "natürlich" in C ++ verwenden (Sie können einen tatsächlichen std :: string-Vektor in json ["mystringlist"] haben, wobei json tatsächlich eine ungeordnete_map ist).

Ich bin kein C ++ - Experte, aber gibt es einen bestimmten Grund, warum ich das nicht tun sollte?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage