<分区>
为什么会出现下面的代码
#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){}
是构造函数的继承问题。每次创建矩形或三角形时,我都想调用多边形的构造函数。但是,令我震惊的是类 Rectangle
和 Triangle
非常相似,并且我只得到 Triangle
的错误,Rectangle
没有。你能解释一下错误的原因吗?我该如何解决?