Почему следующий код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'? –
Вы ошибочно написаны 'Треугольник'. –
... И также используйте списки инициализации –