0

我有一个变量类,我用它来使我的程序中的脚本编写更容易。我正在尝试找出一种简单的方法来执行以下操作:

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; }

通过添加重载运算符,我无需将赋值运算符重载为非成员函数。

4

0 回答 0