首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++错误:没有匹配的函数用于调用'Car::Car()‘

C++错误:没有匹配的函数用于调用'Car::Car()‘
EN

Stack Overflow用户
提问于 2021-04-15 10:57:12
回答 2查看 714关注 0票数 0

我是在空闲时间开始学习C++的,在学习封装时遇到了一个错误。以下是代码(这是对W3Schools中解释的代码的细微修改):

代码语言:javascript
运行
复制
#include <iostream>
using namespace std;

class Car {                          // The class
    private:                         // Access specifier to prevent outsiders from viewing (ENCAPSULATION)
        int theMSRP;                // Private attribute of the car (we don't want random person seeing car price)
    public:
        string brand;               // Attribute
        string model;               // Attribute
        int year;                   // Attribute
        Car(string x, string y, int z){ // Constructor with parameters
            brand = x;
            model = y;
            year = z;
        }
        // Private access specifier SETTER
        void setMSRP(int m){
            theMSRP = m;
        }
        // Private access specifier GETTER
        int getMSRP(){
            return theMSRP;
            }
};

int main(){
    // Create Car objects and call the constructor with different values
    Car myObjMSRP;
    myObjMSRP.setMSRP(100000);
    Car carObj1("Mercedes Benz", "G-Wagon", 2021);

    // Print the values
    cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << " \n";
    cout << myObjMSRP.getMSRP();
    return 0;
}

错误消息返回错误:没有匹配的函数用于调用'Car::Car()‘。我有点困惑,因为另一个对象可以与Car类一起工作,而myObjMSRP对象不能?

非常感谢你的帮助!!

EN

回答 2

Stack Overflow用户

发布于 2021-04-15 11:00:16

您缺少默认构造函数。放在这里:

代码语言:javascript
运行
复制
Car () {
   make = "";
   model = "";
   year = "";
   std::cout << "Hell got loose!!!";
}

您将从这条线路呼叫它

代码语言:javascript
运行
复制
Car myObjMSRP;

或者你也可以

代码语言:javascript
运行
复制
Car myObjMSRP ("Nissan", "Q5", 2011);

尽管有一个建议,了解关于构造函数的初始化器列表:

代码语言:javascript
运行
复制
Car (string x, string y, string z) : make(x), model(y), year(z) {
}

比你的方式更有效

票数 1
EN

Stack Overflow用户

发布于 2021-04-15 11:00:35

而不是这样:

代码语言:javascript
运行
复制
Car myObjMSRP;

您需要传递构造函数参数:

代码语言:javascript
运行
复制
Car myObjMSRP("Tesla", "Roadster", 2022);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67101648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档