gpt4 book ai didi

c++ - 使用运行时类型识别从 void 指针获取数据

转载 作者:行者123 更新时间:2023-11-27 23:16:30 26 4
gpt4 key购买 nike

我有一些对应于某些数据类型的类,这些类应该对实际数据进行编码和解码。例如, class MyInt32将具有编码整数值并从编码字节流中解码它的功能。所有这些类都派生自基类 MyTypes .解码时,从编码中获取值后string 我把值放在相应的数据类型中,例如 int如果是 MyInt ,并将数据作为 void * 返回.

在接收方,我将指针类型转换为 (int *)然后取消引用它以将其放入结果中。

但现在我还需要一个具有数组的类型。在数组的情况下,我使用模板来说明数组的内容举行。也就是说,

template<typename T>
class MyArray:public MyType
{
vector<T *> mydata;
....
};

在解码函数中,我将调用类型 T 的解码。但现在它只返回一个 void*。 .我的阵列不会知道 解码后的类型是什么。所以我无法输入 void *并取消引用它以获得值(value)。那是,如果我采用 MyInt 的数组

MyArray<MyInt> data;

数组' data ' 不知道其解码结果将是 vector<int> .最好将数据作为 vector<int> 传递而不是 vector<int*>我怎样才能实现它?

最佳答案

确保每个可用作模板参数的类型(MyInt 等)都有一个具有给定名称的 typedef,例如 RepresentedType:

class MyInt : public MyType {
public:
typedef int RepresentedType;
....
};

现在您可以在模板类中使用它了:

template<typename T>
class MyArray : public MyType {
....
T::RepresentedType * something();
};

(我希望这是你想要的。)

关于c++ - 使用运行时类型识别从 void 指针获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15963016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com