C知道
#include <iostream>
#include <vector>
#include <numeric> // 用于 std::accumulate
class SalesData {
private:
static double discount; // 商店每天公布的统一折扣
static double sum; // 总销售款
static int n; // 商品销售总件数
public:
// 静态成员函数,用于更新总销售款和总件数
static void updateSumAndCount(double price, int quantity, bool isLargeOrder = false) {
sum += price * quantity;
n += quantity;
// 如果是一次购买超过10件的大订单,则应用额外的9.8折优惠
if (isLargeOrder && quantity >= 10) {
sum *= 0.98;
}
}
// 静态成员函数,用于计算平均售价
static double average() {
if (n == 0) return 0.0; // 防止除以零
return sum / n;
}
// 静态成员函数,用于显示结果
static void display() {
std::cout << "Total sales amount: " << sum << std::endl;
std::cout << "Average selling price: " << average() << std::endl;
}
// 普通成员函数,用于处理销售数据
static void processSalesData(const std::vector<std::tuple<int, int, double>>& salesData) {
for (const auto& sale : salesData) {
int salesmanId = std::get<0>(sale);
int quantity = std::get<1>(sale);
double price = std::get<2>(sale);
// 更新总销售款和总件数
updateSumAndCount(price, quantity);
// 输出每个销货员的销售信息(可选)
std::cout << "Salesman " << salesmanId << " sold " << quantity << " items at price " << price << std::endl;
}
}
};
// 初始化静态数据成员
double SalesData::discount = 0.98; // 商店每天公布的折扣是9.8折
double SalesData::sum = 0.0;
int SalesData::n = 0;
int main() {
// 准备当天的销售数据
std::vector<std::tuple<int, int, double>> salesData = {
{101, 5, 23.5},
{102, 12, 24.56},
{103, 100, 21.5}
};
// 处理销售数据
SalesData::processSalesData(salesData);
// 显示结果
SalesData::display();
return 0;
}
为什么会在std::get<0这里显示错误>,写出改正后的代码