Наследование классов от std ::

Есть много похожих вопросов, и я нашел как за, так и против причин использовать этот шаблон, поэтому я задаю его здесь:

Мне нужно сделать реализацию JSON в C ++ (скажем, что-то вроде домашней работы). Я думал сделать это так:

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 { };
  ...
};

Если вы думаете об этом, все это имеет смысл. Объект JSON "is-a" unordered_map, вектор JSON "is-a" и так далее. Просто они также являются значениями JSON и, например, вектор JSON может содержать значения JSON любого типа (объекты, векторы, строки и т. Д.). Вы также получаете много преимуществ, затем вы можете просто использовать JSON «естественно» в C ++ (вы можете иметь фактический вектор std :: string внутри json ["mystringlist"], причем json фактически является unordered_map).

Я на самом деле не эксперт C ++, но есть ли какая-то конкретная причина, почему бы не сделать это?

Ответы на вопрос(4)

Ваш ответ на вопрос