我有一个变量类,我用它来使我的程序中的脚本编写更容易。我正在尝试找出一种简单的方法来执行以下操作:
myclass
{
protected:
int _data;
...
}
当我使用非成员函数重载运算符时,例如:
int operator+(const int, const myclass);
int operator+(const int lhs, const myclass rhs)
{
return lhs + rhs.GetData();
}
在尝试使用非成员函数重载赋值运算符之前,我没有任何问题。
int operator=(const int, const myclass);
这会产生错误并且不会编译。错误 C4430:缺少类型说明符 - 假定为 int。errir C2801 'operator =' 必须是非静态成员。
我只是希望能够完成以下工作:
myclass A(7);
int B = 5;
int C;
C = B + A;
我怎样才能做到这一点。我有几千万行代码,我只想用 myclass 替换简单的 int,但不想编辑这个变量的每次使用。
注意:已编辑以添加错误消息。
最终编辑:找到解决方案:
operator int() const { return _data; }
通过添加重载运算符,我无需将赋值运算符重载为非成员函数。