これらのコード行は、以下のエラーを示しています。
int e = 5, * ePtr = &e;
void * vPtr = ePtr;
cout << *vPtr;
構文エラー :
「void*」はオブジェクトへのポインタ型ではありません
知っている:
- 任意のポインター型は、明示的なキャストなしで void ポインター型に格納できます
- ポインターを無効にしようとする逆参照の試みは構文エラーです
しかし、ポイント 2 を行うことができない場合、構文的に正しいことを除いて、ポイント 1 の使用は何ですか? を使用して 5 (つまり、e
ここ) を印刷したいvPtr
..それは可能ですか?
これはうまくいきます:
int e = 5, * ePtr = &e;
void * vPtr = ePtr; //specific to generic Ok!
double * dPtr = (double *)vPtr; //to let compiler know stoarge size
cout << *dPtr; //indirectly it is vPtr i.e. a void ptr, can be deref only if cast