が、私は次のプログラムを書いた(&I):しかしはなぜこのエラーです:static_castを<unsigned*>他のすべての前<code>static_cast</code>または<code>dynamic_cast</code>を好むように親指のルールに従うことにより
int main(void)
{
int i = 0;
unsigned *j = static_cast<unsigned*>(&i);
return 0;
}
を、それもコンパイルされません。
$ g++ --std=c++11 test5.cpp
test5.cpp: In function ‘int main()’:
test5.cpp:4:44: error: invalid static_cast from type ‘int*’ to type ‘unsigned int*’
unsigned *j = static_cast<unsigned*>(&i);
^
なぜ間違っていますか?この状況の正しいキャストは何ですか?
これには 'reinterpret_cast'が必要です。 – kennytm
これは 'dynamic_cast'でもコンパイルされませんでした。そのため、前提全体がちょっと欺かれています。 –
@kennytm、これは私が避けようとしているものです。 'reinterpret_cast'と'(unsigned *) 'は悪いので、最後の手段としてのみ使うようにしています。私はそんなに簡単な仕事のためにそれらが必要であるとは思っていませんでした。 – Vorac