所以我试图做一个简单地重载许多运算符的程序,但是由于某种原因,每当我尝试重载赋值运算符时,我都会看到一条错误消息:
错误:请求从'int'转换为非标量类型'Foo'
class Foo {
int value;
public:
operator int() const;
Foo& operator=(const int &val) { value = val; return this; }
...
};
int main()
{
Foo a = 8, b = 9;
...
return 0;
}
我也尝试了没有operator =语句,也没有操作符int()const的方法。声明,但我似乎无法将其编译。
最佳答案
您已经将分配与初始化混淆了。
Foo f = 1; //initialization
f = 2; //assignment
您还需要构造一个也接受
int
的构造函数。Foo(int i) : value(i) {}
//main
Foo f = 1; //uses constructor
因为它是一个单参数构造函数(转换构造函数),所以如果您不希望
int
隐式转换为Foo
,则应将构造函数设为explicit
。关于c++ - 我如何重载赋值运算符,以使我的类等于基本类型,例如“int”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35679277/