指针和带指针的结构

pointer and structure with pointers

这是我的问题: 我有一个结构:

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 或整数或...)

非常感谢。

Drlk.

1)

ioData->data

属于 void* 类型。您不能取消引用 void 指针。您应该首先将其转换为适当的指针类型,在您的情况下为 double

cout << *static_cast<double*>(ioData->data)

2)

*(ioData->data) = 65.5;

你的指针还没有指向任何有效的东西,你不能取消引用它。你可能想要做的是

ioData->data = new double;
*static_cast<double*>(ioData->data) = 65.5

3)

如您所见,处理 void* 很丑陋。 直接在结构中存储double有什么具体原因吗?