c++ - 我收到错误 : "in function main: undefined reference to Fraction::Fraction()"

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

这个问题在这里已经有了答案:





What is an undefined reference/unresolved external symbol error and how do I fix it?

(37 个回答)


7年前关闭。



#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;
}

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

我试过没有重载输入运算符的代码,它工作正常。

我究竟做错了什么?

最佳答案

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

 Fraction();

你没有提供的。

关于c++ - 我收到错误 : "in function main: undefined reference to Fraction::Fraction()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27202633/

相关文章:

c++ - 为什么我不能在 C++ 的全局范围内单独声明和定义变量

c++ - 如何在没有循环的情况下在C++中总结vector int的 vector

c++ - 保存 URI 主机名的容器

java - JNI,我找不到内存泄漏的代码地方

java - 如何找出一个对象有多少引用?

c++ - 引用未命名的临时对象(生命周期)

.net - NuGet 将 DLL 文件放在哪里?

Java 8 供应商行为 : final variable might not be initialized

c++ - 命名空间 'std' 中的“atomic_uint32_t”未命名类型错误

c# - 如何防止方法在 C# .NET 中接受 2 false bool?