gpt4 book ai didi

c++ - 错误 : no matching function for call to 'Rectangle::Rectangle()'

转载 作者:行者123 更新时间:2023-11-28 03:15:27 29 4
gpt4 key购买 nike

我不明白为什么这个程序不起作用。我是 C++ 的新手,在学习了三年 Java 后转行。我认为 Java 中的错误消息毫无意义,但我在 C++ 中得到的错误只是直截了当的胡言乱语。这是我真正能理解的。

无论如何,我有一个包含矩形和方形类的程序。方形类继承自矩形类。我所有的类(class)都在不同的文件中。

================================(主要)

#include <iostream>
#include "Rectangle.h"
#include "Square.h"

using namespace std;

int main(){

Square sq;

}//end main

================================(Rectangle.h)

#ifndef RECTANGLE_H
#define RECTANGLE_H

class Rectangle{

public:

Rectangle (int, int);

void setLength (int);

void setWidth (int);

int getLength ();

int getWidth ();

int getArea ();

private:

int length;
int width;

};

#endif // RECTANGLE_H

=================================(Rectangle.cpp)

#include <iostream>
#include "Rectangle.h"
#include "Square.h"

using namespace std;

Rectangle :: Rectangle (int len, int wid){
length = len;
width = wid;
}//end constructor

void Rectangle :: setLength (int l){
length = l;
}//end setLength

void Rectangle :: setWidth (int w){
width = w;
}//end setWidth

int Rectangle :: getLength (){
return length;
}//end getLength

int Rectangle :: getWidth (){
return width;
}//end getWidth

int Rectangle :: getArea (){
return length * width;
}//end getArea

========================================(Square.h)

#ifndef SQUARE_H
#define SQUARE_H

class Square : public Rectangle
{

public:
Square();

};

#endif // SQUARE_H

====================================(Square.cpp)

#include <iostream>
#include "Rectangle.h"
#include "Square.h"

using namespace std;

Square :: Square {

//super :: Square(4, 3);
cout << "This is bullshit";

};

============================================= ========

最佳答案

正方形;

这将调用 Square 的默认构造函数,它首先调用基类 Rectangle 的默认构造函数。默认构造函数是一个没有参数的构造函数,或者如果它有参数,所有参数都有默认值。如果您尚未定义构造函数,C++ 编译器将为您提供一个默认构造函数。由于您已经定义了构造函数 Rectangle (int, int),因此编译器将不会提供默认构造函数。这就是错误的原因。

解决方案是为 Rectangle 类提供默认构造函数,方法是定义一个不带参数的构造函数 Rectangle() 或为现有构造函数的参数提供默认值,说 Rectangle(int x=10, int y=20)

关于c++ - 错误 : no matching function for call to 'Rectangle::Rectangle()' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17036266/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com