请帮助在继承 #constructor_error 上调试此 c++ 代码

Please help debug this c++ code on Inheritance #constructor_error

本文关键字:调试 c++ 代码 error 帮助 继承 #constructor      更新时间:2023-10-16

这段代码中有一个错误,请帮我解决。

    #include <iostream> 
    #include <string> 
    #include <iomanip> 
    using namespace std; 
    class base 
        protected:
                double area; 
                string p_name; 
                int n_side;
                void show_out();
                base(string,int); 
    };
    class square:public base { 
        private:
                double length,width; 
        public: 
                void get_data();
                void cal_sarea(); 
                square(); 
    }; 
    class triangle:public base { 
        private:
                double base,height;
        public:
                void get_data(); 
                void cal_tarea();
                triangle();  
    }; 
    int main() {
        square sob1; 
        triangle tob1;  
            sob1.get_data(); 
            sob1.cal_sarea(); 
            tob1.get_data(); 
            tob1.cal_tarea(); 
     return 0; 
    }
    void base::show_out() { 
                        cout<<setiosflags(ios::fixed|ios::showpoint)                   <<setprecision(2)<<area<<endl;
    }
    void square::get_data() {
                        cout<<"please enter length"<<endl; 
                        cin>>length; 
                        cout<<"please enter width"<<endl;
                        cin>>width;
    }
    void square::cal_sarea() {
            area = length * width; 
            show_out();
    }
    void triangle::get_data() {
                        cout<<"please enter base of triangle"<<endl;
                        cin>>base; 
                        cout<<"please enter height of the triangle"<<endl;
                        cin>>height; 
}
void triangle::cal_tarea() {
            area = 0.5 * base * height; 
            show_out(); 
    }
    base::base(string name,int num)
     :p_name(name),n_side(num) {}
    square::square() 
       :base("square",4){} 
    triangle::triangle()  //  gives a errors here, it says no matching fucntion to call to base::base() 
         :base("triangle",5) {}

你的triangle-class有一个名为base的成员变量,并且还继承自一个名为base的类。

编译器混淆了这些名称。

成员变量的命名方式与基类名称的命名方式不同。
每个项目必须具有唯一的名称。