【发布时间】:2015-05-25 03:44:37
【问题描述】:
我遇到了运算符重载的问题。布尔运算符工作正常,但其余的只是没有将正确的值传递给指定的对象。问题是在使用this 运算符并显示Island 的区域后,我得到的不是“正常数字”,而是-9.25596e+061。面积是来自Island 类的属性。请帮忙。
以下是这些运算符的声明和其余代码:
Island operator + (const Island &island); // declaration in header file
Island& operator += (const Island &island);
Island Island::operator + (const Island &island) // in .cpp file
{
Island Sum(); // default constructor which set area to 1
Sum.area = area + island.area;
return Sum;
}
Island & Island::operator += (const Island &island)
{
area += island.area;
return *this;
}
所以在主函数中,我通过默认构造函数创建了 3 个岛,我想测试我的运算符。 displayArea() 是 Island 类的方法。
Island2 += Island1; // operator +=
Island.displayArea();
Island3 = Island1 + Island2; //operator +
Island3.displayArea();
这是默认的构造函数和类。
Island::Island()
{
islandName = "Name";
double area = 1;
}
class Island{
double area;
string islandName;
public:
Island(); //constructor
displayArea();
【问题讨论】:
-
带有 main() 函数和预期输出的完整代码示例可以帮助人们回答。
-
我们可以看看你的头文件吗?您是否在类定义中声明了运算符重载函数?
-
这不是你真正的代码,它永远不会编译。
Island Sum();是一个函数声明。 -
这不是你的真实代码,它甚至无法编译。
Island Sum();向前声明一个名为Sum的函数,没有参数并返回Island。 -
这是一个大项目,我只为其中的一小部分寻求帮助。它的编译没有任何问题。