struct limit{
int up;
int down;
};
void *x;
struct limit *l;
l->up=1;
l->down=20;
x=l;
cout<<x->up;
這是我的代碼,我在最後一行「無效*」得到錯誤的部分是不是一個指針到對象類型。我知道我的代碼中的最後一行是錯誤的。我只想知道如何使用x
變量打印和打印數值。「無效*」不是一個指針到對象類型
struct limit{
int up;
int down;
};
void *x;
struct limit *l;
l->up=1;
l->down=20;
x=l;
cout<<x->up;
這是我的代碼,我在最後一行「無效*」得到錯誤的部分是不是一個指針到對象類型。我知道我的代碼中的最後一行是錯誤的。我只想知道如何使用x
變量打印和打印數值。「無效*」不是一個指針到對象類型
在這一部分:
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將幫助你:)
您無法通過'void'指針訪問任何成員。你爲什麼想這樣做?你能提供一些背景嗎? –
你必須_cast_'x'。如果你不知道什麼是類型轉換,你應該得到一些學習資源。 – Zeta
請注意,您在上面的代碼中使用未初始化的'l'。 –