写程序时需要写到与异构链表的Node相似的结构。因为项目用不到链表逻辑,所以本文只实现数据存储部分。CSDN里关于c++异构链表的实现帖子也挺少的。直接贴代码。
//存储任意类型的数据结构
struct AnyElement
{
//什么都不用干的父结构体
struct BaseElement
{
public:
virtual ~BaseElement() {}
};
//实际存储值的结构体
template<typename T>
struct VlaueElement :public BaseElement
{
public:
T Value;
ValueElement(Const T& InValue) :value(InValue) {}
};
public:
//利用上述结构体存储不定类型数据
BaseElement *ElementPtr;
public:
//默认构造函数
AnyElement() :ElementPtr(nullptr) {}
//构造函数传入值来构造具体类型的ElementPtr
template<typename T>
AnyElement(const T& InValue) : ElementPtr(new ValueElement<T>(Invlaue)) {};
//虚构函数
~AnyElement() { delete ElementPtr; }
//获取存入的变量
template<typename T>
T& Get() {
//要用的时候再转换为特定类型
ValueElement<T>* SubPtr = static_cast<ValueElement<T>*>(ElementPtr);
return SubPtr->Value;
}
};