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

c++ operator must be non static member function

本文关键字:静态成员 函数 是非 运算符 c++      更新时间:2023-10-16

可能重复:
什么是“operator=必须是非静态成员”意思是(C++)

我正试图以非成员的身份编写一个运算符=方法,其中有两个参数,如下所示:

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

但是我得到一个错误,运算符=必须是非静态成员。有没有编译器标志或某种方法可以欺骗编译器让我运行这个?

感谢

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

分配操作员应由非静态成员实现函数只包含一个参数。

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