可能重复:
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 =必须是非静态成员。是否有编译器标志或某种方法来欺骗编译器让我运行它?
由于
答案 0 :(得分:2)
否则没有,这是由标准第13.5.3.1段规定的:
任务操作员应为 由非静态成员实现 只有一个参数的函数。
答案 1 :(得分:0)
没有,赋值运算符需要声明为成员(理由是,iirc,以防止覆盖原始或库类型的赋值)。