2015-11-08 2 views
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. Не могли бы вы объяснить мне причину ошибок и как я могу это исправить?

+1

Орфография/опечатка возможно: '' Trianlge' против Triangle'? –

+0

Вы ошибочно написаны 'Треугольник'. –

+0

... И также используйте списки инициализации –

ответ

1

У вас есть опечатка здесь внутри Triangle класса

Trianlge(int width,int height): Polygon(width,height){} 
^
^
Смежные вопросы