0

我只是想创建一个重载的朋友函数(我说得对吗?)来添加两种不同类型的“硬币”类。看来我无法正确使用语法。有人可以指出我正确的方向吗?

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); 

谁能指出我正确的方向?我应该发布完整的代码吗?

4

2 回答 2

1

您应该在硬币类中放置:

friend coins operator+(const coins&, const coins&);

(即它有一个左侧操作数和一个右侧操作数)。

于 2013-02-27T04:30:03.707 回答
1

该错误消息X does not name a type似乎表明编译器无法识别X为一种类型,要么是因为它没有看到定义,要么是因为在找到该类型之前通过查找找到了其他东西。

检查您是否包含了适当的标头,并且在您定义运算符的位置没有其他符号coins在隐藏该类型的范围内。另请注意,运算符应定义在与它们操作的类型相同的命名空间中。

于 2013-02-27T04:48:24.980 回答