1
struct limit{
  int up;
  int down;
};

void *x;

struct limit *l;
l->up=1;
l->down=20;

x=l;

cout<<x->up;

これは私のコードの一部で、最後の行'void*' is not a pointer-to-object typeでエラーが発生しています。コードの最後の行が間違っていることはわかっています。x変数を使用して上下の値を出力する方法を知りたいだけです。

4

1 に答える 1

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*に、最初から使用しないでください。


のためにこれを行っていると述べたので 、この回答が役立ちます:)

于 2013-10-16T13:03:45.907 に答える