2

私はポインタに95%慣れていないことに注意してください。

これが私のジレンマです、私はそれを呼びましょう構造を持っていますfoo

struct foo{
int a;
}

それでは、fooのインスタンスを作成しましょう

foo test;

これを指すためにvoidポインタを割り当てたいと思います

 void *ptest;
 ptest = &test;

これはすべてうまく機能しますが、コンテンツの変更(つまり、foo内のint)に関しては、これにどのようにアプローチするかがわかりません。私はこのように試しstatic_castました:

static_cast<foo*>(ptest).a=0; 

しかし、それもうまくいきませんでした。どんな助けでもいただければ幸いです。ありがとう

4

2 に答える 2

2

単に置き換える必要があります。->

オブジェクトまたはその参照を直接処理する場合はドット演算子を使用し、ポインターを介してオブジェクトを処理する場合は->演算子を使用します。

于 2012-09-20T01:28:25.813 に答える
2

ポインタにキャストしているため、演算子を使用して逆参照する*か、演算子を使用する必要があります->

オプションA:

*(static_cast<foo*>(ptest)).a=0

オプションB:

static_cast<foo*>(ptest)->a=0
于 2012-09-20T01:28:43.330 に答える