我只是想创建一个超载的朋友功能(我说的是对吗?)来添加两种不同类型的“硬币”。 看来我无法正确理解语法。有人能指出我正确的方向吗?
我的functions.cpp
文件中实现的逻辑:
coins operator+(const coins &num1, const coins &num2)
{
int dollars = num1.dollars + num2.dollars;
int cents = num1.cents + num2.cents;
return coins(dollars, cents);
}
我对朋友功能的functions.h
声明:
coins operator+(const coins &num1, const coins &num2);
我的班级文件在coins.h
声明了一位朋友:
friend coins operator+(coins);
有人能指出我正确的方向吗?我应该发布完整的代码吗?
答案 0 :(得分:1)
在硬币类中你应该放:
friend coins operator+(const coins&, const coins&);
(即它有一个左侧操作数和一个右侧操作数)。
答案 1 :(得分:1)
错误消息X does not name a type
似乎表明编译器不会将X
识别为类型,因为它没有看到定义,或者因为查找之前找不到其他内容它变成了类型。
检查您是否包含相应的标头,并且在定义运算符的位置,范围中没有其他符号coins
隐藏该类型。还要注意运算符应该在与它们运行的类型相同的命名空间中定义。