下面的代码是距离类的一部分。运算符重载是一个友元函数,声明为 Distance 类的私有成员,而我尝试调用的函数是公共成员。此函数不会更改 Distance 类的成员变量。
我试图保持两个引用调用对象 d1 和 d2 不变,但我的编译器说我通过调用 ConvertToInches 函数或位于距离类中的任何函数违反了它们的 const 属性,尽管这些函数不会更改私有变量在距离类中。
当我不使 d1 和 d2 保持不变时,编译器没有问题。
谁能解释在调用此函数时如何使 d1 和 d2 保持不变以及为什么我所拥有的不起作用?
谢谢!
const Distance operator+(const Distance& d1, const Distance d2)
//this is a friend function
//declared in private section of Distance class
{
//this function is what causes problems !!!!!!!
d1.ConvertToInches(1, 2, 3, 4);
Distance d3 = 3;
return d3;
}
Distance::ConvertToInches(const int cMiles, const int cYards, const int cFeet, const int cInches)
//declared in public section of Distance class
{
cMiles = cMiles * 63360;
cYards = cYards *36;
cFeet = cFeet * 12;
int cSum = cMiles + cYards + cFeet + cInches;
return cSum;
}