如何重载赋值运算符以允许我的类等于原始类型,如'int'

时间:2016-02-28 05:56:21

标签: c++ operator-overloading operators overloading assignment-operator

所以我试图做一个简单地重载许多运算符的程序,但出于某种原因,每当我尝试重载赋值运算符时,我都会收到错误消息

  

错误:从'int'转换为非标量类型'Foo'请求

"scripts": {
  "postinstall": "grunt build"
}

我也尝试过没有operator =语句而没有运算符int()const;声明,但我似乎无法将其编译。

1 个答案:

答案 0 :(得分:2)

你把分配与初始化混为一谈。

Foo f = 1; //initialization
f = 2; //assignment

你需要创建一个接受int的构造函数。

Foo(int i) : value(i) {}

//main

Foo f = 1; //uses constructor

由于它是单个参数构造函数(转换构造函数),如果您不希望int可隐式转换为Foo,则应该构造函数explicit。< / p>