unary をオーバーロードしたクラスがありoperator&
ます。そのタイプのオブジェクトは を使用して作成されたnew
ため、変数のアドレスにアクセスできましたが、静的オブジェクトを使用する必要があります。そのアドレスを取得することは可能ですか?
7237 次
2 に答える
36
C++11 以降では、ヘッダーstd::addressof(object)
で宣言されています。<memory>
const
歴史的には、特に修飾子をvolatile
正しく処理したい場合は、よりグロテスクでした。Boostの実装で使用される1つの可能性addressof
は
reinterpret_cast<T*>(
&const_cast<char&>(
reinterpret_cast<const volatile char &>(object)))
最初に変換中に修飾子を追加して、それが機能するchar&
ようにしますが、修飾されました。次に、最終的な変換が機能するようにそれらを削除します。最後にアドレスを取得し、それを正しいタイプに変換します。と同じ修飾子を持っている限り( から推定されるテンプレート パラメーターとして)、結果のポインターは正しく修飾されます。reinterpret_cast
object
T
object
object
于 2014-10-30T13:55:45.413 に答える
30
C++11 以降、関数std::addressofを使用できます。
于 2014-10-30T13:49:39.873 に答える