首页 > 解决方案 > C++ 新手:尝试从实现中学习单独的接口并得到错误:VSCode 中二进制表达式的操作数无效

问题描述

我正在学习与C++ 中的实现分离的接口并得到这个错误。

搜索它,但不明白我应该如何在我的代码中实现它。这是我的代码。

发票类.h:

#include<string>
using namespace std;

class InvoiceClass{
    private:
        int price;
        int quantity;
        string partName;
        string partDescription;

    public:
        InvoiceClass(string, string, int, int);
        void displayInvoice();
        void setDetail(string, string, int, int);
};

发票类.cpp:

#include<iostream>
#include"InvoiceClass.h"
using namespace std;

// Constructor function.
InvoiceClass::InvoiceClass(string partName, string partDescription, int qty, int price){
    price = price;
    quantity = qty;
    partName = partName;
    partDescription = partDescription;
}

void InvoiceClass::setDetail(string partName, string partDescription, int qty, int price){
    price = price;
    quantity = qty;
    partName = partName;
    partDescription = partDescription;
}

void InvoiceClass::displayInvoice(){
    cout<<"Invoice"<<endl;
    cout<<"Item    "<<"Desc      "<<"QTY      "<<"Price"<<endl;
    cout<<partName<<"     "<<partDescription<<"     "<<quantity<<"     "<<price<<endl;
}

主.cpp:

#include<iostream>
#include"InvoiceClass.h"
using namespace std;

// Main function
int main(){
    InvoiceClass customer("iMac", "By Apple", 1, 219000);

    cout<<customer.displayInvoice()<<endl;
}

它应该打印 displayInvoice() 的输出。请帮我。

标签: c++c++11c++14

解决方案


你的功能不会返回,所以当你这样做时

 cout<<customer.displayInvoice()  

您基本上是说显示我的函数返回的内容,我认为您不想这样做

int main(){
    InvoiceClass customer("iMac", "By Apple", 1, 219000);

    customer.displayInvoice();
}

加:在你的构造函数中

编译器在您的构造函数输入中的“价格”与您的类的变量价格与其他变量相同之间混淆,因此您必须使用“this”来消除这种混淆

 InvoiceClass::InvoiceClass(string partName, string partDescription, int qty,  int price) {
    this->price = price;
    quantity = qty;
    this->partName = partName;
    this->partDescription = partDescription;
}

setDetail 函数中的相同问题


推荐阅读