Szukam eleganckiego rozwiązania problemu, gdzie typ wartości jest uzależniony od wartości pewnej zmiennej ( enum ) i może być zmieniany/zastępowany w czasie działania. Natrafiłem na artykuł o próbie zaimplementowania refleksji w C++, w którym ten problem został poruszony i pokazane w nim rozwiązanie bardzo mi się spodobało. Prototyp + interfejs, czyli tak jak to sobie mniej więcej wyobrażałem.
Pojawia się tam jednak jeszcze pimpl, który skutecznie zamieszał mi w głowie.

  1. Do czego konkretnie służy klasa Value i jakie płyną korzyści związane z jej użyciem. Czy nie prościej jest to okroić do jednej klasy z metodą szablonową? A może to zbyt naiwne rozwiązanie i w praktyce się zupełnie nie sprawdzi?
  2. Jaki jest routing metody Value getValue(size_t attribIdx) const z klasy Object i na czym polega ta magia?

Z góry dziękuję za rozjaśnienie umysłu, bo domyślam się, że jest to prostsze niż mi się wydaje, ale z jakichś niewyjaśnionych powodów nie mogę tego pojąć :)

Link do artykułu: http://www.vollmann.com/en/pubs/meta/meta/meta.html

Mam nadzieję, że dobry dział

Edyta:
Topornie bo topornie, ale przyswoiłem temat ;)