我正在编写一个简单的程序来计算面积,我得到的错误是:



我无法理解此错误的原因以及如何解决。

#include <iostream>
using namespace std;

class myclass{
    int length;
    int breadth;
public:
    myclass(int x, int y);
    int area(int x, int y);
};

myclass::myclass(int x,int y ){
    length=x;
    breadth=y;
}

int myclass::area(int x, int y){
    return x*y;
}

int main()
{
    myclass a;
    a.area(3,4);
}

最佳答案

在此声明中

myclass a;

应该被称为该类的默认构造函数,但是您没有定义默认构造函数。

成员函数区域也没有太大意义,因为它不计算该类对象的区域。

有效代码可能如下所示
#include <iostream>

class myclass
{
private:
   int length;
   int breadth;

public:
   myclass(int x, int y);
   int area() const;
};

myclass::myclass(int x,int y ) : length( x ), breadth( y )
{
}

int myclass::area() const
{
   return length * breadth;
}

int main()
{
   myclass a(3,4);

   std::cout << "area = " << a.area() << std::endl;
}

您也可以通过以下方式声明构造函数
   myclass( int x = 0, int y = 0 );

在这种情况下,它将是默认构造函数。

关于c++ - 没有匹配的函数来调用 ‘myclass::myclass()’,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25264525/

10-11 23:09
查看更多