3

&クラス内で単項演算子を次のようにオーバーロードできます。

struct X
{
   void* operator &()
   {
      return this;
   }
};

アドレスを返すようにします。クラスの外でどのようにオーバーロードしますか:

struct X
{
};

void* operator &(const X& x)
{
    //how?
}

パラメータのアドレスを取得すると、無限再帰が発生します。

4

1 に答える 1

5

C ++ 11には、がありtemplate< class T > T* std::addressof(T& arg)ます。

std :: addressof

BoostUtilityからC++03用の同じ関数を入手することもできます

于 2012-06-28T09:55:52.933 に答える