我有一个问题,就像这样赋予对象int:
class Wurzel{
private:
int wurzelexponent;
int wert;
public:
Wurzel(){
wurzelexponent=1;
wert=1;
}
Wurzel& operator =(const Wurzel &w) {
wurzelexponent = w.wurzelexponent;
}
};
我的带有赋值运算符的类:
=
我必须使用a+r
运算符
问题出在哪里?
答案 0 :(得分:4)
我必须使用=运算符
执行此操作
不,你不能。由于class Wurzel{
...
public:
...
Wurzel(int x) : wurzelexponent(x), wert(1) {}
Wurzel(int x, int y) : wurzelexponent(x), wert(y) {}
...
};
不是分配,因此它是初始化copy initialization。正如错误消息所述,您需要converting constructor来完成它。
Wurzel b = 3; // Wurzel::Wurzel(int) will be called
Wurzel b = {3, 2}; // Wurzel::Wurzel(int, int) will be called [1]
然后
operator=
请注意,Wurzel b; // default initialized
b = something; // this is assignment, operator=() will be used
仅用于分配,例如:
.numbers {
color: white;
font-size: 130%;
font-weight: bold;
width: 45px;
display: inline-block;
text-align: right;
}
[1]从C ++ 11引入了具有多个参数的转换构造函数。
答案 1 :(得分:0)
您正在尝试协助int:const Wurzel &w
,但您的operator =仅为Wurzel
重载。它的参数是Wurzel
,而不是int,int不能隐式转换为Wurzel& operator =(int i)
{}
。要修复,您可以添加另一个运算符:
var productLineCount = products.productLines.length;
var productTypesCount = products.productLines.map(line => line.types.length);
var totalTypesCount = productTypesCount.reduce((sum, cur) => sum + cur, 0);
答案 2 :(得分:0)
问题是没有定义所需的功能。
一个解决方案是重载int
运算符以接受class Wurzel{
private:
int wurzelexponent;
int wert;
public:
Wurzel(){
wurzelexponent=1;
wert=1;
}
// this is constructor, not = operator
/*
Wurzel(int a) {
wurzelexponent = a;
wert = a;
}
*/
Wurzel& operator =(const Wurzel &w) {
wurzelexponent = w.wurzelexponent;
return *this; // you should return something
}
Wurzel& operator=(int a) {
// implement as you like
wurzelexponent = a;
return *this;
}
};
int main() {
Wurzel a;
// this is not = operator but initializing
//Wurzel b=3;
Wurzel b;
b = 3; // this is = opetator, which you say you must use
return 0;
}
。
试试这个:
npm install