Новое в C ++: попытка изучить отдельный интерфейс от реализации и ошибка: недопустимые операнды для двоичного выражения в VSCode - PullRequest
0 голосов
/ 27 января 2019

Я узнал о отделении интерфейса от реализации в C ++ и получил эту ошибку.

Искал его, но не понял, как мне реализовать это в моем коде. Это мойкод.

InvoiceClass.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);
};

InvoiceClass.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;
}

main.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 ().Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 27 января 2019

ваша функция не возвращается, поэтому, когда вы делаете

 cout<<customer.displayInvoice()  

вы в основном говорите, покажите, что возвращает моя функция, чего я не думаю, что вы хотели сделать

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

    customer.displayInvoice();
}

Плюс: в вашем конструкторе

Компилятор путает между «ценой» на входе вашего конструктора и переменной цены вашего класса, аналогичной переменной других, поэтому вы должны использовать «это» для устранения этой путаницы

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

Та же проблема в функции setDetail

...