0

クラス「コイン」の2つの異なるタイプを追加するために、オーバーロードされたフレンド関数を作成しようとしています(正しい言い回しですか?)。構文を正しく取得できないようです。誰かが私を正しい方向に向けることができますか?

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

エラーメッセージX does not name a typeは、コンパイラがX定義を認識していないか、型に到達する前に検索によって見つかったものがあるため、コンパイラが型として認識していないことを示しているようです。

coins適切なヘッダーを含めていること、および演算子を定義している場所に、スコープ内に型を隠している他のシンボルがないことを確認してください。また、演算子は、操作対象の型と同じ名前空間で定義する必要があることに注意してください。

于 2013-02-27T04:48:24.980 に答える
1

coins クラス内に以下を配置する必要があります。

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

(つまり、左側のオペランドと右側のオペランドがあります)。

于 2013-02-27T04:30:03.707 に答える