错误 C2679:二进制“<<”:未找到采用 'RatNum' 类型的 right-hand 操作数的运算符(或没有可接受的转换)
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'RatNum' (or there is no acceptable conversion)
我在重载 << 运算符时遇到问题。我已经尝试找到答案,但似乎大多数人都没有实施覆盖。我只是在学习 C++,但我相信这可能是一个范围问题。我正在尝试打印一个有理数(分数和整数)class,它有两个分子和分母成员。
Header 文件:
#ifndef RATMATH_H
#define RATMATH_H
using namespace std;
class RatMath
{
public:
RatMath(void);
virtual ~RatMath();
friend ostream& operator<<(ostream &output, RatNum &resultObj);
};
#endif
在 RatMath class:
ostream& operator<<(ostream &output, RatNum &resultNum)
{
int topNum = resultNum.getTopNum();
int botNum = resultNum.getBotNum();
output << topNum << "/" << botNum;
return output;
}
然后在 GUI class 中从 int main() 调用它(在 header-not 中没有声明确定这是否是一个问题,但它之前工作正常) :
RatNum testObj = RatNum(1, 3);
cout << testObj;
我尝试将覆盖放在 GUI class 中以查看它是否是一个范围问题,但后来我不知道将 'friend' 声明放在哪里,因为 GUI class 未在 header 中定义。无论哪种方式,它都没有用。有什么想法吗?
你的函数有错误的类型:
friend ostream& operator<<(ostream &output, RatNum &resultObj);
应该是:
friend ostream& operator<<(ostream &output, **const** RatNum &resultObj);
您的好友声明
friend ostream& operator<<(ostream &output, const RatNum &resultObj);
应该放在 RatNum class 的 (header) 中,而不是放在 RatMath Class.
的 (header) 中
我在重载 << 运算符时遇到问题。我已经尝试找到答案,但似乎大多数人都没有实施覆盖。我只是在学习 C++,但我相信这可能是一个范围问题。我正在尝试打印一个有理数(分数和整数)class,它有两个分子和分母成员。
Header 文件:
#ifndef RATMATH_H
#define RATMATH_H
using namespace std;
class RatMath
{
public:
RatMath(void);
virtual ~RatMath();
friend ostream& operator<<(ostream &output, RatNum &resultObj);
};
#endif
在 RatMath class:
ostream& operator<<(ostream &output, RatNum &resultNum)
{
int topNum = resultNum.getTopNum();
int botNum = resultNum.getBotNum();
output << topNum << "/" << botNum;
return output;
}
然后在 GUI class 中从 int main() 调用它(在 header-not 中没有声明确定这是否是一个问题,但它之前工作正常) :
RatNum testObj = RatNum(1, 3);
cout << testObj;
我尝试将覆盖放在 GUI class 中以查看它是否是一个范围问题,但后来我不知道将 'friend' 声明放在哪里,因为 GUI class 未在 header 中定义。无论哪种方式,它都没有用。有什么想法吗?
你的函数有错误的类型:
friend ostream& operator<<(ostream &output, RatNum &resultObj);
应该是:
friend ostream& operator<<(ostream &output, **const** RatNum &resultObj);
您的好友声明
friend ostream& operator<<(ostream &output, const RatNum &resultObj);
应该放在 RatNum class 的 (header) 中,而不是放在 RatMath Class.
的 (header) 中