struct limit{
int up;
int down;
};
void *x;
struct limit *l;
l->up=1;
l->down=20;
x=l;
cout<<x->up;
这是我的代码的一部分我在最后一行收到错误'void *'不是指针对象类型。我知道我的代码中的最后一行是错误的。我只想知道如何使用x
变量打印上下值。
答案 0 :(得分:5)
在这部分:
struct limit *l;
l->up=1;
l->down=20;
您要取消引用未初始化的指针l
,这会导致 未定义的行为 。但是,即使您正确初始化它,在将其分配给void*
后,也无法取消引用void
指针:
void* x = l;
cout<< x->up;
您需要明确地将其转发回struct limit*
:
void* x = l;
struct limit * y = static_cast<struct limit*>(x);
cout << y->up;
或更好:避免在第一时间使用void*
。
由于您提及由于pthreads而执行此操作,因此this answer会帮助您:)