Matriz associativa C ++ com tipos arbitrários para valores
Qual é a melhor maneira de ter uma matriz associativa com tipos de valores arbitrários para cada chave em C ++?
Atualmente, meu plano é criar uma classe "value" com variáveis de membro dos tipos que esperarei. Por exemplo:
class Value {
int iValue;
Value(int v) { iValue = v; }
std::string sValue;
Value(std::string v) { sValue = v; }
SomeClass *cValue;
Value(SomeClass *v) { cValue = c; }
};
std::map<std::string, Value> table;
Uma desvantagem disso é que você precisa saber o tipo ao acessar o "Valor". ou seja:
table["something"] = Value(5);
SomeClass *s = table["something"].cValue; // broken pointer
Além disso, quanto mais tipos forem colocados em Value, mais inchada será a matriz.
Alguma sugestão melhor?