[英]C++ IOStream Operator Overload Error
I'm encountering an error I can't seem to figure out in my bare-bones program I need to write and eventually adapt into a more complex piece of code.我遇到了一个错误,我似乎无法在我需要编写并最终适应更复杂的代码的基本程序中弄清楚。
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
These are my two errors, and here are my three files.这是我的两个错误,这是我的三个文件。
Main.cpp主.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;
}
Wordnum.h字数.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 */
Wordnum.cpp字数.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;
}
you have declared as friend function but defined as member of Wordnum by using WordNum::
in WordNum.cpp
it should be instead:你已经声明为朋友 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.