Я пытаюсь создать небольшую интерфейсную функцию и отправить ее в класс форматирования JSON. JSON работает только с (неограниченными) парами ключ-значение, но значение может быть (только): string, int, bool
Теперь у меня есть:
struct Data
{
std::vector<std::pair<std::string, int64_t>> intData;
std::vector<std::pair<std::string, std::string>> strData;
std::vector<std::pair<std::string, bool>> boolData;
};
void func(const Data& data);
Но я не Мне это очень нравится (3 почти одинаковые структуры в Data
), возможно, есть лучший способ C ++.
В идеале для меня было бы иметь что-то (шаблонное) более чистое и работать как:
// pseudocode, I know that it does not work
struct Data
{ // AnyType = string, int or bool
std::vector<std::pair<std::string, AnyType>> data;
};
// or better
using Data = std::vector<std::pair<std::string, AnyType>> data;
Data data;
data.add("int value", 1);
data.add("string value", "str");
data.add("bool value", false);
func(data);
Спасибо
LE: Я использую C ++ 11, к сожалению, не могу использовать другой стандарт.