我有一些类对应于一些应该对实际数据进行编码和解码的数据类型。例如,
class MyInt32
将具有对整数值进行编码并从编码字节流中对其进行解码的功能。所有这些类都派生自一个基类,MyTypes
. 解码时,在从编码字符串中获取值后,我将值放入相应的数据类型中,例如int
在 的情况下MyInt
,并将数据作为void *
.
在接收端,我对指针进行类型转换(int *)
,然后取消引用它以将其放入结果中。
但现在我也需要一种类型来拥有数组。在数组的情况下,我使用模板来说明数组要保存的内容。那是,
template<typename T>
class MyArray:public MyType
{
vector<T *> mydata;
....
};
在解码函数中,我将调用类型 T 的解码。但现在它只返回一个void*
. 我的数组不会知道解码后的类型是什么。所以我不能对它进行类型转换void *
和取消引用来获取值。也就是说,如果我取一个数组MyInt
MyArray<MyInt> data;
数组 ' data
' 不会知道它的解码结果是vector<int>
. 最好将数据传递为vector<int>
而不是vector<int*>
如何实现它?