gpt4 book ai didi

C++构造函数继承错误

转载 作者:行者123 更新时间:2023-11-28 05:59:14 25 4
gpt4 key购买 nike

<分区>

为什么会出现下面的代码

#include <iostream>
using namespace std;

class Polygon {
protected:
int width, height;
Polygon()
{
cout<<"Constructor with no arguments\n";
width = 0;
height = 0;
}
Polygon(int width,int height)
{
cout<<"Constructor with 2 arguments\n";
this->width = width;
this->height = height;
}
};

class Rectangle: public Polygon {
public:
Rectangle(int width,int height):Polygon(width,height){}
int area ()
{ return width * height; }
};

class Triangle: public Polygon {
public:
Trianlge(int width,int height): Polygon(width,height){}
int area ()
{ return width * height / 2; }
};

int main () {
//Rectangle rect(4,4);
//Triangle trgl(4,4);
return 0;
}

导致这些错误:

 test.cpp:34:39: error: ISO C++ forbids declaration of ‘Trianlge’ with no type [-fpermissive]
Trianlge(int width,int height): Polygon(width,height){}
^
test.cpp: In member function ‘int Triangle::Trianlge(int, int)’:
test.cpp:34:42: error: only constructors take member initializers
Trianlge(int width,int height): Polygon(width,height){}
^
test.cpp:34:64: warning: no return statement in function returning non-void [-Wreturn-type]
Trianlge(int width,int height): Polygon(width,height){}

是构造函数的继承问题。每次创建矩形或三角形时,我都想调用多边形的构造函数。但是,令我震惊的是类 RectangleTriangle 非常相似,并且我只得到 Triangle 的错误,Rectangle 没有。你能解释一下错误的原因吗?我该如何解决?

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