C++ 错误没有匹配的调用函数

标签 c++ qt function class

我一直在做 Qt 作业,我已经完成了整个任务,但我似乎无法修复一个不会让我的程序运行的最后一个错误。

错误是:

no matching function for call to 'Vendor::Vendor(QString&, QString&, bool&)'
  Vendor supplierInfo(supplierNmae,supplierEmail,supplierIsManufacturer);
  line 41                                                              ^

它由两个类组成,但只有我的供应商类和主类受错误影响。

这是我的 main.cpp 的代码:

#include <QCoreApplication>
#include "vendor.h"
#include "product.h"
#include <QString>
#include <QTextStream>

QTextStream cout(stdout);
QTextStream cin(stdin);

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    //Declare variables
    QString productName;
    double productPrice;
    QString supplierName;
    QString supplierEmail;
    QString supplierIsManufacturerStr;
    bool supplierIsManufacturer;

    //Get user input
    cout << "Enter the product name:\t";
    productName = cin.readLine();
    cout << "Enter the product price:\tR";
    cin >> productPrice;
    cout << "Enter the supplier name:\t";
    supplierName = cin.readLine();
    cout << "Enter the supplier email:\t";
    cin >> supplierEmail;
    cout <<"Is the supplier a manufacturer:\t";
    cin >> supplierIsManufacturerStr;

    if(supplierIsManufacturerStr.at(0).toLower() == 'y') {
        supplierIsManufacturer = true;
    } else {
        supplierIsManufacturer = false;
    }

    //Implement classes
    Vendor vendor(supplierName, supplierEmail, supplierIsManufacturer);
    Product product(productName, productPrice, vendor);
    product.setSupplier(supplierName, supplierEmail, supplierIsManufacturer);

    product.toString(supplierIsManufacturer);

    return a.exec();
}

这是我的 vendor.h 文件的代码:

#ifndef VENDOR_H
#define VENDOR_H

#include <QString>

class Vendor {
public:
    Vendor();
    void setDetails(QString name, QString email, bool isManufacturer);
    bool isManufacturer();
    QString getName();
    QString toString();
private:
    QString m_Name;
    QString m_Email;
    bool m_IsManufacturer;
};

#endif // VENDOR_H

我仍然回到关于使用类的区域,所以我完全没有练习,我将不胜感激我能在这方面得到的任何帮助。提前谢谢你。

最佳答案

Vendor 类缺少与 main.cpp 中的行匹配的构造函数。 要么实现构造函数:

// Vendor.h
class Vendor {
public:
  Vendor();
  Vendor(const QString& name, const QString& email, bool isManufacturer);
  ...

// Vendor.cpp
Vendor::Vendor(const QString& name, const QString& email, bool isManufacturer)
: m_Name(name), m_Email(email), m_IsManufacturer(isManufacturer)
{}

或者使用已有的setDetails函数:

Vendor vendor;
vendor.setDetails(supplierName, supplierEmail, supplierIsManufacturer);

关于C++ 错误没有匹配的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28780768/

相关文章:

python - Vim:警告:不输出到终端

c++ - 如何创建一个行为类似于消息框的 Qt 窗口?

postgresql - 如何在plpgsql中使用记录类型变量?

function - 我应该如何在Perl中定义“静态”子例程?

c++ - 奇怪的函数返回结果

c++ - 如何从一行字符串中获取字符串?

c++ - 使用 C++ 进行十六进制编辑

c++ - BeagleBone -> HTML -> C++ 通信

c++ - 如何在Qt中运行纯c++程序?

c++ - Qt5内存使用取决于窗口大小?