我有一个班级:
class taphop
{
public:
taphop();
~taphop();
taphop(const list&);
taphop& operator=(const taphop&);
taphop operator+(const int&);
taphop operator+(const taphop&);
};
在main
中,我无法使用多个参数:
main()
{
taphop lmc=lmc+2+5+3+2; // Error;
lmc=lmc+3+5+2; // Error;
int a=a+1+2+4+5; // Not error;
a=a+1+2+4+5; // Not error;
return 0;
}
答案 0 :(得分:0)
有一件事是肯定的。以下是未定义的。
taphop lmc = lmc + 2 + 5 + 3 + 2;
因为运算符+将在表达式中假定为完全构造的对象的尸体上调用
lmc+2+5+3+2
答案 1 :(得分:0)
除了使用lmc初始化lmc之外,您只需要阅读编译器提供给您的错误消息。以下是我对你可能要做的事情的看法:
class taphop
{
int value;
public:
taphop(const int x = 0) :value(x) {} // default value of 0
~taphop() {}
int getvalue() const { return value; }
taphop& operator=(const taphop &r) { value = r.value; return *this; }
taphop operator+(const int x) { return taphop(value + x); }
taphop operator+(const taphop &r) { return taphop(value + r.value); }
};
int main()
{
taphop lmc = taphop(0) + 2 + 5 + 3 + 2;
std::cout << lmc.getvalue() << std::endl; // prints 12
lmc = lmc + 3 + 5 + 2;
std::cout << lmc.getvalue() << std::endl; // prints 22
return 0;
}