Witam,
Potrzebuję stworzyć klasę, która będzie jakby uniwersalnym kontenerem na zmienne. Chciałbym aby klasa ta posiadała co najmniej dwie metody, jedna do dodawania zmiennej do kontenera, druga np. do przypisywania zmiennym wartości. Aby dokładniej zobrazować o co mi chodzi pozwólcie, że posłużę się przykładem:
class KontenerNaZmienne
{
public:
template <class T>
void dodaj(const std::string& nazwa, T& referencja)
{
}
void przypisz(const std::string& NazwanaZmienna, const std::string& wartosc)
{
}
};
Coś mniej więcej w ten deseń, chciałbym aby nie trzeba było do realizacji tego używać void*
Potem, gdybym miał już taki kontener, chciałbym móc działać sobie na nim w ten sposób:
KontenerNaZmienne kont;
int mojInt(0);
double mojDouble(0.);
std::string mojString("");
kont.dodaj("integer", mojInt);
kont.dodaj("dbl", mojDouble);
kont.dodaj("str", mojString);
kont.przypisz("integer", "15");
kont.przypisz("dbl", "45.9");
kont.przypisz("str", "wacek");
To tyle jeśli chodzi o życzenia :-) Teraz co wiem:
Wiem że należy to zrobić na szablonach
Wiem że można wykorzystać Boost MPL, niestety nie miałem jeszcze okazji się z nią zapoznać [wstyd]
I to chyba tyle, najgorsze jest to że nie mam nawet pomysłu jak się za to zabrać. W oczekiwaniu na odpowiedź kogoś kto miał z takimi cudami już do czynienia zagłębię się w lekturę dokumentacji Boost MPL :-P