我试图创建一个类来处理一些将解析输入的函数,因此我必须在main()
中创建一个实例,如下所示:
#include <iostream>
#include <string>
using namespace std;
class Triangle{
private:
double a, b, c, h;
public:
Triangle(double sideA, double sideB, double sideC): a(sideA), b(sideB), c(sideC){}
double get_perimeter()
{
return a + b + c;
}
double get_area()
{
return (b*h)/2;
}
bool exists(double a, double b, double c)
{
return a + b > c && a + c > b && b + c > a;
}
};
int main()
{
double a, b, c, h;
cin >> a >> b >> c >> h;
Triangle t(a, b, c, h);
if(!t.exists())
{
cout << "No such triangle!" << endl;
return 1;
}
cout << t.get_perimeter() << endl;
cout << t.get_area() << endl;
return 0;
}
但是,我收到以下错误triangle.cpp|37|error: no matching function for call to 'Triangle::exists()'|
答案 0 :(得分:2)
你在没有参数的情况下调用它。
if(!t.exists())
但是您声明为: -
bool exists(double a, double b, double c)
在类似的行上,构造函数调用与其声明不匹配...
答案 1 :(得分:0)
存在的成员函数被声明为具有三个参数
bool exists(double a, double b, double c)
但是你不用参数调用它
if(!t.exists())
因此编译器无法找到没有参数声明的函数。
您应该定义类似
的功能bool exists() const
{
return a + b > c && a + c > b && b + c > a;
}
因为看起来a,b和c是类实例的数据成员。
您还将构造函数声明为具有三个参数
Triangle(double sideA, double sideB, double sideC): /*...*/
但是你用四个参数调用它
Triangle t(a, b, c, h);
我认为h的值应该根据a,b和c的值来计算,而不是输入。