如何超载一元&课外?

时间:2012-06-28 09:43:29

标签: c++ operator-overloading

您可以将类中的一元&运算符重载为:

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

以便它返回一个地址。你会如何在课外重载:

struct X
{
};

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

获取参数的地址将导致无限递归。

1 个答案:

答案 0 :(得分:5)

在C ++ 11中,有template< class T > T* std::addressof(T& arg)

std::addressof

您也可以从Boost Utility

获得C ++ 03的相同功能