【发布时间】:2013-04-12 04:21:30
【问题描述】:
我有一些类对应于一些应该对实际数据进行编码和解码的数据类型。例如,
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*>
我怎样才能实现它?
【问题讨论】:
标签: c++ templates casting void-pointers runtime-type