我一直在收到一个错误:“在函数main中:未定义引用Fraction :: Fraction()”

时间:2014-11-29 13:08:20

标签: c++ reference compiler-errors operator-overloading

#include <iostream>

using namespace std;

class Fraction
{

private:
  //variables to store numerator and denominator
  int num;
  int denom;

public:
  Fraction();
  Fraction(int num): num(num) {}
  Fraction(int num, int denom): num(num), denom(denom) {}

  int get_numerator() const {return num;}
  int get_denominator() const {return denom;}
};

istream &operator>> (istream &input, Fraction &f)
{
  int n, d;
  char slash;
  input >> n;
  input >> slash;
  input >> d;

  f = Fraction(n, d);
  return input;
}

ostream &operator<<(ostream &output, const Fraction &frac)
{
  return output << frac.get_numerator() << "/" << frac.get_denominator();
}

int main()
{
  Fraction frac(1,2);
  Fraction frac2;

  cout << frac << endl;

  cin >> frac2;
  cout << frac2 << endl;

  return 0;
}

我正在尝试创建一个分数数据类型。 该代码应允许用户使用重载的“&gt;&gt;”输入分数运算符,但它不起作用,因为我得到一个错误: 在函数'main'中:未定义引用Fraction :: Fraction()

我已经尝试了没有重载输入操作符的代码,它工作正常。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

编译器要求定义以下函数(默认构造函数): -

 Fraction();

您尚未提供。