2012-02-01 11 views
0
struct myStruct 
{ 
    myClass* member; 
} 

myStruct *s = (myStruct*) someVariable; 

s->memberの値をmyFunction (myClass c)に設定します。どのように逆参照するのですか?このメンバーの参照を解除するにはどうすればよいですか?

+2

「someVariable」とは何ですか、なぜそれをキャストしていますか? – FatalError

+1

s->メンバーは間接参照する必要がありますか?質問は何ですか? – RussS

+0

'void *'です。私はその部分を変更することができない関数呼び出しの部分を持っています。私は下のブロックが掲載されたことを信じています。 – Cheetah

答えて

2

この方法:あなたが構造を持つポインタのために行うよう

*(s->member) <------ Gives you a `myClass` object 

同じ。

int main() 
{ 
    myFunction(*(s->member)); 
    return 0; 
} 
+0

愚かな、愚かな私。私は愚かであることを知っていた。ありがとう。 – Cheetah

1

あなたはポインタデリファレンスoperator*を使用することができます:それはよう

void myFunction (myClass c) 
{ 


} 

コール。この場合、*s->memberを実行します。 s->memberのまわりにかっこの必要はありません。

someVariablemyStruct*にキャスティングする理由は不明です。

また、構造体定義の後に;がありません。

+0

's-> member'の前後にかっこは必要ありません。それは良い可読性を提供するので、 '()'を省略することを主張する必要はありません。 –

+0

「s-> memberの周りにカッコが必要ない理由」を説明するのに気をつけますか? –

+1

@Als:個人的には、かっこを読みやすくする必要はありません。余分な括弧が自由に追加されるのを見て、私はそれが欠けているフォームを表示するために多くの使用を見つける。 –

関連する問題