错误:在 C++ 中没有用于调用构造函数的匹配函数

Posted

技术标签:

【中文标题】错误:在 C++ 中没有用于调用构造函数的匹配函数【英文标题】:Error: no matching function for call to constructor in 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!";
    

【问题讨论】:

【参考方案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!";
    

【讨论】:

以上是关于错误:在 C++ 中没有用于调用构造函数的匹配函数的主要内容,如果未能解决你的问题,请参考以下文章

C++ 错误:没有用于初始化的匹配构造函数

C++ 错误:没有用于初始化的匹配构造函数

c++ 错误:没有匹配的函数用于从函数内调用“getline”,但在 main 中有效

错误:没有用于调用'variable'的匹配函数

没有与构造函数调用的匹配函数(T *数据)

调用Dice :: Dice(类构造函数)没有匹配函数