1
为什么下面的代码C++构造继承错误
#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){}
它与构造函数的继承问题。每次创建矩形或三角形时,我都想调用Polygon的构造函数。但是,我发现类Rectangle
和Triangle
非常相似,我只在Triangle
上出错,而在Rectangle
上出错。您能否向我解释错误的原因以及如何解决?
拼字/错字也许是:'Trianlge'与'Triangle'? –
你拼错'三角形'。 –
...并使用初始化列表 –