【发布时间】:2015-07-10 05:07:55
【问题描述】:
这是我的问题: 我有一个结构:
typedef struct Data_Package{
int type;
size_t size;
void* data;
}Data_Package;
我有一个函数:(编辑:Armen Tsirunyan 评论)(它是一个 .C 函数)
void myFunc(Data_Package* ioData) {
ioData->data = malloc(sizeof(double));
(ioData->data)= (double*)62.5
} //that doesn't work
以及我想在其中使用我的功能的 main.cpp:
Data_Package* ioData=0;
/* some random operation that change the data,type,... */
myFunc(ioData);
stc::cout << *static_cast<double*>(ioData->data) << std::endl //I want to display te value data (and not the address)
所以我想知道如何更改函数中的值数据,然后将其显示在 main.cpp 中(我需要使用指针并且数据是 void* 因为它可能是 double 或 bool 或 int 或 .. .)
非常感谢。
博士。
【问题讨论】:
-
看起来你最好使用构造函数和
boost:variant。 -
我想我可以试试,但它和定义的类型一样精确吗?例如,我从另一个文件中收到一个 double。如果我将其转换为变体,我会丢失数据和精度吗?
-
现在有什么问题?我看到你已经改变了你的问题(并使答案无效)。您不应该以这种方式编辑您的问题(不要更改其内容,只需在 EDIT 部分添加更多信息)。那么,什么不起作用?你想做什么?
-
仍然是同样的问题:我无法访问 ioData->data 值。我已经尝试了提出的解决方案并更改了函数,但它仍然无法编译(ioData->data = (double*)62.5 的问题:无法转换为指针)。
-
好吧,您不能将双精度值转换为指针(您正在使用
(double*)62.5进行操作)。 @ArmenTsirunyan 向您展示了如何做到这一点 -*(ioData->data) = 65.5;。试试吧。