代码有什么问题
What‘s wrong with the code?
这在Visual Studio 2015中运行良好,但是当我使用MinGw时无法运行良好。为什么?如何解决?
错误信息:
<小时 />不匹配 'operator<<' (操作数类型为 'std::ostream {aka std::basic_ostream}' 和 'Fraction'( werjiorqq.cpp/werjiorqq/src line 106 C/C++ 问题
不匹配 'operator<<' (操作数类型为 'std::ostream {aka std::basic_ostream}' 和 'Fraction'( werjiorqq.cpp/werjiorqq/src line 107 C/C++ 问题
不匹配 'operator<<' (操作数类型为 'std::ostream {aka std::basic_ostream}' 和 'Fraction'( werjiorqq.cpp/werjiorqq/src line 108 C/C++ 问题
不匹配 'operator<<' (操作数类型为 'std::ostream {aka std::basic_ostream} 和 'Fraction'( werjiorqq.cpp/werjiorqq/src line 109 C/C++ 问题
调用 'Fraction::Fraction(Fraction(' 时没有匹配函数 werjiorqq.cpp/werjiorqq/src line 71 C/C++ 问题
调用 'Fraction::Fraction(Fraction(' 时没有匹配函数 werjiorqq.cpp/werjiorqq/src line 88 C/C++ 问题
#include <iostream>
#include <cmath>
using namespace std;
int gcd(int m, int n) {
if (m%n == 0)
return n;
else
return gcd(n, m%n);
}
int preGcd(int m, int n) {
int absm = abs(m);
int absn = abs(n);
int g = gcd(absm, absn);
return g;
}
class Fraction {
int m, n;
public:
Fraction() {
}
Fraction(Fraction& f) {
m = f.getM();
n = f.getN();
}
Fraction(int m, int n) {
this->m = m;
this->n = n;
}
friend ostream& operator<< (ostream& out,Fraction& f) {
cout << f.m << '/' << f.n << endl;
return out;
}
int getM() {
return m;
}
int getN() {
return n;
}
void reduction() {
int g;
if (n > m)
g = preGcd(n, m);
else
g = preGcd(m, n);
m /= g;
n /= g;
}
friend Fraction operator+ (Fraction f1,Fraction f2) {
int nn = f1.n*f2.n;
int nm = f1.m*f2.n + f2.m*f1.n;
Fraction *p = new Fraction(nm, nn);
p->reduction();
return *p;
}
friend Fraction operator- (Fraction f1, Fraction f2) {
f2.m = (-f2.m);
return operator+ (f1, f2);
}
friend Fraction operator* (Fraction f1, Fraction f2) {
/*cout << f1;
cout << f2;*/
int nn = f1.n*f2.n;
int nm = f1.m*f2.m;
Fraction *p = new Fraction(nm, nn);
p->reduction();
return *p;
}
friend Fraction operator/ (Fraction f1, Fraction f2) {
int temp = f2.m;
f2.m = f2.n;
f2.n = temp;
return operator*(f1, f2);
}
void revenue() {
cout << n << '/' << m << endl;
}
};
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
Fraction f1(a, b);
Fraction f2(c, d);
cout << f1 + f2;
cout << f1 - f2;
cout << f1*f2;
cout << f1 / f2;
f1.revenue();
}
您需要尽可能应用const
。 例如:
Fraction(const Fraction &);
friend ostream& operator<< (ostream& out, const Fraction& f);
int getM() const;
int getN() const;
等。
- 警告处理为错误这里有什么问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 违反const正确性:我应该现实地期待什么问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 我的逻辑反转字符串中的元音有什么问题?
- 需要以下代码的帮助,下面的代码有什么问题
- 常量公共成员有什么问题?
- c++无值sort()的问题是什么?
- 以下代码中的函数模板有什么问题?
- 这个返回元素位置的基于循环的函数有什么问题?
- creat_list2功能有什么问题?
- 基本的 c++ 问题:如果我在函数中创建某些内容并返回它会发生什么?
- 我遇到了黑客排名中的问题"TWO STRINGS"的三个测试用例的分段错误。原因是什么?
- 什么是钻石问题?是一系列问题还是特定问题?
- 格式说明符C++有什么问题
- 我应该在 main 函数中写什么来测试我的问题?
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 方法问题 - 什么会改变值,什么不会改变?什么是无效的?