c ++运算符必须是非静态成员函数

时间:2011-06-27 13:20:02

标签: c++ operator-overloading operator-keyword

  

可能重复:
  What does “operator = must be a non-static member” mean? (C++)

我正在尝试将operator =方法编写为非成员,其中包含2个参数:

template<class T>
T operator=(T & t, const myclass<T>& m)
{
    t = m.val;
    return t;
}

但我得到的错误是operator =必须是非静态成员。是否有编译器标志或某种方法来欺骗编译器让我运行它?

由于

2 个答案:

答案 0 :(得分:2)

否则没有,这是由标准第13.5.3.1段规定的:

  

任务操作员应为   由非静态成员实现   只有一个参数的函数。

答案 1 :(得分:0)

没有,赋值运算符需要声明为成员(理由是,iirc,以防止覆盖原始或库类型的赋值)。