簡體   English   中英

C++ IOStream 運算符過載錯誤

[英]C++ IOStream Operator Overload Error

我遇到了一個錯誤,我似乎無法在我需要編寫並最終適應更復雜的代碼的基本程序中弄清楚。

Wordnum.cpp:10:67: error: ‘std::ostream& Wordnum::operator<<(std::ostream&, const Wordnum&)’ must take exactly one argument

Wordnum.cpp:14:61: error: ‘std::ostream& Wordnum::operator>>(std::istream&, Wordnum&)’ must take exactly one argument

這是我的兩個錯誤,這是我的三個文件。

主.cpp

#include <cstdlib>
#include <iostream>

#include "Wordnum.h"

using namespace std;

int main(int argc, char** argv) {

    float n1, n2;
    char op;

    while (cin >> n1 >> op >> n2) {
        Wordnum a(n1), b(n2);
        switch (op) {
            case '+': cout << a + b << endl; break;
        }
    }

    return 0;
}

字數.h

#ifndef WORDNUM_H
#define WORDNUM_H

#include <iostream>

class Wordnum {
public:
    Wordnum(int n);     // CONSTRUCTOR

    friend Wordnum operator+ (const Wordnum& n1, const Wordnum& n2) 
        { return Wordnum(n1.value_ + n2.value_); }
    friend Wordnum operator- (const Wordnum& n1, const Wordnum& n2) 
        { return Wordnum(n1.value_ - n2.value_); }
    friend Wordnum operator* (const Wordnum& n1, const Wordnum& n2) 
        { return Wordnum(n1.value_ * n2.value_); }
    friend Wordnum operator/ (const Wordnum& n1, const Wordnum& n2) 
        { return Wordnum(n1.value_ / n2.value_); }

    friend std::ostream& operator<< (std::ostream&, const Wordnum& n);
    friend std::istream& operator>> (std::istream&, Wordnum& n);

private:
    int value_;
};

#endif  /* WORDNUM_H */

字數.cpp

#include "Wordnum.h"

#include <iostream>


Wordnum::Wordnum(int n) {
    value_ = n;
}

std::ostream& Wordnum::operator<< (std::ostream&, const Wordnum& n) {
    return 0;
}

std::ostream& Wordnum::operator>> (std::istream&, Wordnum& n) {
    return 0;
}

你已經聲明為朋友 function 但通過使用WordNum::WordNum.cpp中定義為 Wordnum 的成員,它應該是:

std::ostream& operator<< (std::ostream &os, const Wordnum& n) {
  return os;
}

std::istream& operator>> (std::istream &is, Wordnum& n) {
   return is;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM