Как реализовать тип «кодека» через шаблонC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как реализовать тип «кодека» через шаблон

Сообщение Anonymous »

Мне было поручено упростить и/или модернизировать пользовательский интерфейс для собственного (устаревшего) анализа JSON. Вот типичное использование: < /p>
struct foo {
bool b;
int i;
float f;
std::string s;

json_value *encode() const {
json_value *o = json::new_object(4);
json::put(o, "b", b);
json::put(o, "i", i);
json::put(o, "f", f);
json::put(o, "s", s);
return o;
}

void decode(json_value const *o) {
json::get(o, "b", b);
json::get(o, "i", i);
json::get(o, "f", f);
json::get(o, "s", s);
}
};
< /code>
На мой вкус это уже достаточно просто, но, увы, это не мое решение. В любом случае, возможно, есть способ объединить ключи с типами с помощью шаблона C ++, конечным результатом является что -то вроде этого (псевдокод): < /p>
CODEC = json::codec::keys;
// encoding...
json_value *o = CODEC::encode(b, i, f, s);
// decoding...
std::tuple t = CODEC::decode(o);
< /code>
Я некоторое время играл с этой идеей, но не смог понять это для себя. Так что я обращаюсь к сообществу. Это разумный дизайн в первую очередь? Как я могу понять это?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... templating
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»