それがどれほど反発的でハッキーであるかを無視して、以下は安全であることが保証されていますか? そうでない場合、なぜですか?
//.h
struct foo
{
const static intptr_t KEY = (intptr_t) "VALUE";
};
//.cpp
void useFoo()
{
const char * value = (const char *) foo::KEY;
printf("%s",value);
}
それがどれほど反発的でハッキーであるかを無視して、以下は安全であることが保証されていますか? そうでない場合、なぜですか?
//.h
struct foo
{
const static intptr_t KEY = (intptr_t) "VALUE";
};
//.cpp
void useFoo()
{
const char * value = (const char *) foo::KEY;
printf("%s",value);
}
コードの安全性が保証されていないだけでなく、コードの形式が正しくありません。
"VALUE"はタイプであり、経由char const[6]で変換することはできません。intptr_tstatic_cast
コンパイルされないことが保証されています。static_castを使用してポインターから整数型に、またはその逆に変換することはできません。それが である場合、コンパイラは定数の折りたたみを行うことができ、が一意でなくなる可能性があるため、控えめに言っても壊れやすいreinterpret_castでしょう。KEY
さらに、アプリケーションで静的メンバー変数を定義するKEY必要があります。