编写二次公式程序时出现编译错误

Compilation errors when writing a quadratic formula program

本文关键字:程序 错误 编译 二次      更新时间:2023-10-16

无法编译此代码并正常工作

实现文件:

#include <cmath>
#include "quadEquation.h"
using namespace std;
QuadEquation::QuadEquation()
{
  int a,b,c;
}
QuadEquation::QuadEquation(int first, int second, int third)
{
  a = first;
  b = second;
  c = third;
}
int QuadEquation::getA()
{
  return a;
}
int QuadEquation::getB()
{
  return b;
}
int QuadEquation::getC()
{
  return c;
}
int QuadEquation::getDiscriminant()
{
  return b * b - 4 * a * c;
}
int QuadEquation::getRoot1()
{
  discrim = getDiscrimant();
  return -b + sqrt(discrim) / (2 * a);
}
int QuadEquation::getRoot2()
{
  discrim = getDiscriminant();
  return -b - sqrt(discrim) / (2 * a);
}

头文件:

#ifndef QUADEQUATION_H
#define QUADEQUATION_H
class QuadEquation
{
 private:
  int a, b, c;
 public:
  QuadEquation(int, int, int);
  int getA();
  int getB();
  int getC();
  int getDiscriminant();
  int getRoot1();
  int getRoot2();
};
#endif
#include <iostream>
#include "quadEquation.h"
using namespace std;
int main()
{
  QuadEquation quad1(1,0,9);
  cout << "The first root  of the first quadratic equation is: " << quad1.getRoot1() << endl;
  return 0;
}

我得到的一些错误

quadEquation.cpp:5:错误:"quadEquation::QuadEqulation()"的原型与类"quadEquation"中的任何原型都不匹配`quadEquation.h:5:错误:候选为:`quadEquation::QuadEquration(const QuadEqimation&)`quadEquation.h:10:错误:`quadEquation::QuadEquration(int,int,int)`quadEquation.cpp:在成员函数`int quadEquation::getRoot1()`中:quadEquation.cpp:35:错误:未在此作用域中声明"discim"quadEquation.cpp:35:错误:未在此作用域中声明"getDiscrimant"quadEquation.cpp:在成员函数`int quadEquation::getRoot2()`中:quadEquation.cpp:40:错误:未在此作用域中声明"discim"

您定义的构造函数之一是

QuadEquation::QuadEquation()
{
  int a,b,c;
}

但是这个构造函数并没有在头文件中定义。此外,这看起来像是你的一个错误,因为这个构造函数没有多大意义——它只声明了三个局部变量,没有使用其中的任何一个。如果您确实想声明这个构造函数,请将其添加到头文件中,但从您的代码来看,我认为这没有必要。

至于你的其他错误,看看这个代码:

int QuadEquation::getRoot1()
{
  discrim = getDiscrimant();
  return -b + sqrt(discrim) / (2 * a);
}

我突然想到两件事。首先,discrim在哪里声明?其次,如果二次公式可以有任意的复值根,那么返回int有什么原因吗?有没有其他类型的可以在这里使用?

总的来说,您应该学会阅读这些编译器错误消息。我所指出的一切都可以很容易地从错误输出中收集到。既然你已经知道了问题是什么,你能看到它们是如何产生给定的编译器错误的吗?

希望这能有所帮助!