C ++ ассоциативный массив с произвольными типами для значений
Каков наилучший способ иметь ассоциативный массив с произвольными типами значений для каждого ключа в C ++?
В настоящее время я планирую создать класс «value» с переменными-членами типов, которые я буду ожидать. Например:
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;
Недостатком этого является то, что вы должны знать тип при доступе к «Значение». т.е .:
table["something"] = Value(5);
SomeClass *s = table["something"].cValue; // broken pointer
Также, чем больше типов добавлено в Value, тем более раздутым будет массив.
Есть лучшие предложения?