无法解决对重载函数的引用;你是说打电话吗

时间:2019-08-14 22:02:20

标签: c++ variables if-statement

问题描述:这家大学书店每年10月24日举行千字节日销售,如果价格低于128美元,则对所有计算机配件的购买均提供8%的折扣,如果价格至少为128美元,则提供16%的折扣。编写一个程序,要求收银员提供原始价格,然后打印折扣价。

我正在尝试解决此问题。我在第24行中遇到错误。


#include <iostream>

using namespace std;

int main()
{ 
    double original_price;
    double discount_rate;
    double discount_price;

    cout << "Enter Original Price:" << endl;

    cin >> original_price;

    //cout << original_price << endl;

    if (original_price < 128)
    {
        discount_rate = 0.92;
    }
    else
    {
        discount_rate = 0.84;
    }
    double discounted_price = discount_rate * original_price << endl;
    cout << "discounted_price: " << discounted_price;

    return 0;
}
错误:无法解析对重载函数的引用;你是想打电话吗?

2 个答案:

答案 0 :(得分:2)

以下行格式不正确:

double discounted_price = discount_rate * original_price<<endl;

std::endlstd::cout一起使用以结束一行并刷新输出。您只能在输出流上实际调用operator<<(std::endl),而不能在double上调用。实际上,尝试以这种方式将行尾附加到数值上并没有真正的意义。

请执行以下操作:

double discounted_price = discount_rate * original_price;
cout << "discounted_price: "<< discounted_price << endl;

这将计算折价,然后使用std::endl打印它,以添加换行符并刷新标准输出流。

答案 1 :(得分:2)

好得多,但您仍然将endl放在错误的位置。

double discounted_price = discount_rate * original_price<<endl;
cout << "discounted_price: "<< discounted_price;

应该是

double discounted_price = discount_rate * original_price;
cout << "discounted_price: "<< discounted_price << endl;

endl是一种输出操作,用于在输出中添加换行符,在进行计算时它没有位置。