【问题标题】:Error: no matching function for call to constructor in C++错误:在 C++ 中没有用于调用构造函数的匹配函数
【发布时间】:2020-10-08 07:27:36
【问题描述】:

我正在制作一个小程序,它使用构造函数、类、对象和继承来显示所选项目的价格。但是,派生类中的两个不同构造函数出现两个错误,我该如何解决这个问题?

#include<iostream>
using namespace std;
class Beverage{
public:
    int cost_of_water, cost_of_sugar;
    Beverage(int x, int y){
    cost_of_water = x;
    cost_of_sugar = y;
    }
    int computeCost(){
    }
    void print(){
    cout<<"The cost of the beverage is: ";
    }
};
class Tea: public Beverage{
public:
    int price_of_tea_leaves;
    Tea(int a){
    price_of_tea_leaves = a;
    }
    int computeCost(){
        int cost = cost_of_sugar + cost_of_water + price_of_tea_leaves;
        return cost;
    }
};
class Coffee: public Beverage{
public:
    int price_of_coffee_powder;
    Coffee(int b){
    price_of_coffee_powder = b;
    }
    int computeCost(){
        int cost = cost_of_sugar + cost_of_water + price_of_coffee_powder;
        return cost;
    }
};
int main(){
    int m,n;
    cout<<"*****Welcome to the cafeteria management system*****";
    cout<<"1 FOR TEA, 2 FOR COFFEE";
    cin>>m;
    if(m = 1){
        Beverage B(10,5);
        Tea T(10);
        B.print();
        T.computeCost();
    }
    else if (m = 2){
       Beverage B(10,5);
       Coffee C(15);
       B.print();
       C.computeCost();
    }
    else{
        cout<<"Thank You!";
    }
}

【问题讨论】:

    标签: c++ oop inheritance constructor


    【解决方案1】:

    所以,这里是运行良好的代码:

    #include<iostream>
    using namespace std;
    class Beverage{     //base class
    public:                 
        int cost_of_water, cost_of_sugar;
        Beverage(int x, int y){     //base class constructor
        cost_of_water = x;
        cost_of_sugar = y;
        }
        int computeCost(){
        }
    
    };
    class Tea: public Beverage{     //derived class
    public:
        int price_of_tea_leaves;
        Tea(int a):Beverage(10,5){      //derived class constructor
        price_of_tea_leaves = a;
        }
        int computeCost(){
            int cost = cost_of_sugar + cost_of_water + price_of_tea_leaves;
            return cost;
        }
        void print(){
        cout<<"The cost of the tea is: "<<computeCost();
        }
    };
    class Coffee: public Beverage{    //derived class
    public:
        int price_of_coffee_powder;
        Coffee(int b):Beverage(10,5){       //derived class constructor
        price_of_coffee_powder = b;
        }
        int computeCost(){
            int cost = cost_of_sugar + cost_of_water + price_of_coffee_powder;
            return cost;
        }
        void print(){
        cout<<"The cost of the coffee is: "<<computeCost();
        }
    };
    int main(){
        int m,n;
        cout<<"*****Welcome to the Cafeteria management system*****"<<endl;;
        cout<<"Input 1 for TEA and 2 for COFFEE: ";
        cin>>m;
        if(m == 1){
            Beverage B(10,5);
            Tea T(10);
            T.print();
        }
        else if (m == 2){
           Beverage B(10,5);
           Coffee C(25);
           C.print();
        }
        else{
            cout<<"ByeBye!";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-09
      • 2013-07-23
      • 1970-01-01
      • 2020-01-22
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      相关资源
      最近更新 更多