【发布时间】:2015-02-24 08:51:18
【问题描述】:
我正在将我的 C++ 程序连接到 C++ 框架。
框架返回一个 void* 指针,它指向使用 malloc() 初始化的一组数据:
void* getData() {
return framework->returnPointer();
}
只有在运行时才知道数据的类型(来自我的程序),框架具有以下功能:
size_t ndf_sizeof(ndf_typeid id) {
switch(id) {
case NDF_INT64:
return sizeof(int64_t);
case NDF_FLOAT:
return sizeof(float);
case NDF_DOUBLE:
return sizeof(double);
}
return 0;
}
数据可以采用几种不同的类型,类型存储为 ndf_type(即数据类型的整数标识符)。数据在运行时不会改变类型。我可以取回数据的ndf_type,也可以取回数据的大小。
我需要能够做两件事:
- 在运行时声明并初始化一个与数据相同类型的缓冲区
- 遍历数据并将值放入我的缓冲区
当处理 void* 指针并且仅在运行时知道数据类型时,我遇到了困难,它本身可以采用几种不同的类型。我曾尝试使用模板和通用数据结构,但无济于事。
非常感谢此问题的解决方案。
【问题讨论】:
标签: c++ malloc void-pointers generic-programming