【发布时间】:2021-09-01 01:38:02
【问题描述】:
我正在学习使用 void 指针。在这里,我创建了一个资源类,它可以在(void *) 中存储任何类型的结构,现在当我尝试在(void *) 中取回该结构时,我无法取回相同的数据。请在这里帮忙
#include <iostream>
using namespace std;
class resource{
private:
void* data;
public:
void set(void* val){
data = val;
}
void get(void* val){
val = data;
}
};
class student{
struct st{
int id;
int age;
};
public:
void func(){
st *st1 = (st *)malloc(sizeof(st));
st1->id = 5;
st1->age = 10;
resource *rsrc = new resource();
rsrc->set((void*)st1);
void *data;
rsrc->get(&data);
st *st2 = (st*)data;
cout<<"get data %d"<<st2->id<<endl; // HERE I want to get same data back
}
};
int main() {
student *stu = new student();
stu->func();
return 0;
}
【问题讨论】:
-
void get(void** val){*val = data;}或者只返回数据而不是使用输出参数。 -
参数传值,指针也不例外。
-
@463035818_is_not_a_number 我很确定在 c++ 中将 malloc 用于 POD 是有效的(尽管绝对不是现代 c++ 惯用的)。
-
@MikeVine 哦,对了,我太偏执了。评论已删除。
标签: c++ casting void-pointers