Я делаю простой boost::any
подобный класс для образовательных целей, но я не могу понять, как получить доступ к сохраненному значению. Я могу точно установить значение, но когда я пытаюсь получить доступ к любому члену в классе "holder", компилятор просто жалуется, что член не был найден в классе, из которого он был получен. Я не могу объявить участников как virtual
из-за шаблонов.
Вот соответствующий код:
class Element
{
struct ValueStorageBase
{
};
template <typename Datatype>
struct ValueStorage: public ValueStorageBase
{
Datatype Value;
ValueStorage(Datatype InitialValue)
{
Value = InitialValue;
}
};
ValueStorageBase* StoredValue;
public:
template <typename Datatype>
Element(Datatype InitialValue)
{
StoredValue = new ValueStorage<Datatype>(InitialValue);
}
template <typename Datatype>
Datatype Get()
{
return StoredValue->Value; // Error: "struct Element::ValueStorageBase" has no member named "Value."
}
};