如何超载一元和外部类?

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

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

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

struct X
{
};

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

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


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

的std :: addressof

您也可以从Boost Utility获得C ++ 03的相同功能

链接地址: http://www.djcxy.com/p/73059.html

上一篇: How to overload unary & outside class?

下一篇: Overload comparison operators for a templated class