访问类中的值类似于boost :: any
我正在为教育目的制作一个简单的
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."
}
};
没有找到相关结果
已邀请:
2 个回复
朗排谎纷瘟
如果你改变Get来返回
你可以返回
而不是扔。你还没有处理previous6ѭ之前值的记忆,但是我要把它留给你了。
渐首洽陈染
。 还要将虚拟析构函数添加到ValueStorageBase类,以获得多态类。没有它你不能运行时检查你的铸件是否正常:)。 之后你可以写: