Наследование классов от 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 ++, но есть ли какая-то конкретная причина, почему бы не сделать это?