创建好友功能时出错,“硬币没有命名类型”

时间:2013-02-27 04:26:51

标签: c++ operator-keyword friend

我只是想创建一个超载的朋友功能(我说的是对吗?)来添加两种不同类型的“硬币”。 看来我无法正确理解语法。有人能指出我正确的方向吗?

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

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

2 个答案:

答案 0 :(得分:1)

在硬币类中你应该放:

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

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

答案 1 :(得分:1)

错误消息X does not name a type似乎表明编译器不会将X识别为类型,因为它没有看到定义,或者因为查找之前找不到其他内容它变成了类型。

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