【发布时间】:2017-11-29 22:48:48
【问题描述】:
我正在为介绍性 c++ 课程编写程序,但收到一条我不理解的错误消息。我有一个名为 fraction 的类,有一个名为 DividedBy 的成员函数。 DividedBy的初始化和定义如下:
fraction fraction::DividedBy(fraction operand)
fraction fraction::DividedBy(fraction operand){
int quotNum = num * operand.num;
int quotDenom = denom * operand.denom;
simplify(quotNum, quotDenom);
fraction quot = fraction(quotNum, quotDenom);
return quot;}
我这样调用函数 DividedBy:
result = f3.DividedBy(f4);
result、f3 和 f4 都是分数对象。我收到此错误消息:
将 'const fraction' 作为 'fraction fraction::DividedBy(fraction)' 的 'this' 参数传递会丢弃限定符 [-fpermissive]
这是什么意思?我查看了这条消息,它似乎总是涉及有人试图传递一个不变的论点,我很确定我不会在这里做。我以某种方式丢弃了哪些限定词?
【问题讨论】:
-
那么
f3是如何声明的? -
我要大胆的说
DividedBy应该是const,这样你就可以在const fractions 上调用它。 -
我知道我的错误在哪里。我得到了代码,并被告知要为它编写一个类。代码在我没有意识到的情况下将 f3 声明为常量。我也会尽量确保在未来提供更完整的代码图片。
标签: c++