Existe uma maneira elegante de representar um mapa contendo tipos diferentes em C ++?
Eu estou construindo uma classe que eu quero configurar usando vários parâmetros que podem um dos seguintes:int
, double
estring
(ouconst char *
para esse assunto). Em uma linguagem como Ruby, eu criaria uma função de inicialização que usa um hash digitado por uma string. Por exemplo:
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 })
Como posso criar um comportamento semelhante em C ++?
Olhando em volta, encontrei vários posts falando sobreboost::variant
. Eu preferiria evitar o uso do impulso se, ao limitar os diferentes tipos aos três tipos mencionados acima, uma solução bastante limpa puder ser feita.
Editar: Concordo que usar um código bem projetado e amplamente testado, como o Boost.Variant, é muito melhor do que reimplementar a mesma idéia. Nesse caso, o problema é reduzido ao uso de apenas 3 tipos básicos, então eu estava procurando a maneira mais simples possível de implementá-lo.