当我尝试编译以下代码时出现一个奇怪的错误: 我需要使用结构(我用struct keywor教我的类,并试图以这种方式学习它。我还需要将函数定义放在struct块之外。
#include <iostream>
#include <string>
using namespace std;
struct Box {
int l;
int w;
int area();
Box();
Box(int a, int b);
Box operator+(const Box a, const Box b);
};
Box::Box() {
l = 0;
w = 0;
}
Box::Box(int a, int b) {
l = a;
w = b;
}
Box Box::operator+(const Box a, const Box b) {
Box box(a.l + b.l, a.w + b.w);
return box;
}
int Box::area() {
return l * w;
}
int main() {
Box a(1, 2);
Box b;
b.l = 3;
b.w = 4;
Box c = a + b;
cout << "Total area is: " << a.area() << " + " << (b.area) << " = " << (c.area) << endl;
}
有人可以帮帮我吗?感谢
答案 0 :(得分:0)
operator+
应该只接收一个Box
类型的参数(从+的右侧),它应该被添加到当前对象中(从+的左侧) ):
Box Box::operator+(const Box& a) {
Box box(a.l + l, a.w + w);
return box;
}
同样在cout
行,它应该是b.area()
和c.area()
,而不是(b.area)
和(c.area)
。
答案 1 :(得分:0)