Sri*_*sha 1 c++ pointers void-pointers
struct limit{
int up;
int down;
};
void *x;
struct limit *l;
l->up=1;
l->down=20;
x=l;
cout<<x->up;
Run Code Online (Sandbox Code Playgroud)
这是我的代码,我在最后一行得到错误的部分"无效*"不是一个指针到对象类型.我知道我的代码中的最后一行是错误的.我只想知道如何使用x变量打印上下值.
在这部分:
struct limit *l;
l->up=1;
l->down=20;
Run Code Online (Sandbox Code Playgroud)
您正在取消引用未初始化的指针l,这会导致未定义的行为.但是,即使您正确初始化它,在分配之后void*,也无法取消引用void指针:
void* x = l;
cout<< x->up;
Run Code Online (Sandbox Code Playgroud)
你需要明确地将它强制转换为struct limit*:
void* x = l;
struct limit * y = static_cast<struct limit*>(x);
cout << y->up;
Run Code Online (Sandbox Code Playgroud)
或者甚至更好:避免void*在第一时间使用.
既然你提到你因为pthreads而这样做 ,那么这个答案会帮助你:)
| 归档时间: |
|
| 查看次数: |
8228 次 |
| 最近记录: |