Есть ли элегантный способ представить карту, содержащую различные типы в C ++?
Я строю класс, который я хочу настроить, используя различные параметры, которые могут быть одним из:int
, double
а такжеstring
(или жеconst char *
в этом отношении). На языке, подобном Ruby, я бы построил функцию инициализации, которая принимает хеш, заданный строкой. Например:
class Example
def init_with_params params
puts params
end
end
e = Example.new
e.init_with_params({ "OutputFile" => "/tmp/out.txt", "CaptureFPS" => 25.0, "RetryDelaySeconds" => 5 })
Как я могу создать подобное поведение в C ++?
Оглядываясь вокруг, я обнаружил, что несколько постов говорят оboost::variant
, Я предпочел бы избегать использования наддува, если путем ограничения различных типов тремя типами, которые я упомянул выше, можно сделать довольно чистое решение.
редактироватьЯ согласен, что использование хорошо разработанного и широко протестированного кода, такого как Boost.Variant, намного лучше, чем повторная реализация той же идеи. В этом случае проблема сводится к использованию только 3 основных типов, поэтому я искал самый простой из возможных способов его реализации.