if (sale->taxStatus[i] = "y") // line 44
产生错误:
y.cpp:44:12: error: request for member taxStatus in sale, which is of non-class type Sale*
我的结构:
struct Sale {
int quantity[MAX_SALES];
float unitPrice[MAX_SALES];
char taxStatus[MAX_SALES]; // MAX_SALES = 10
};
完整功能:
void total(struct Sale sale[], int sales) {
int i = 0;
float subTotal, hst, total = 0;
for (i = 0; i < sales; i++) {
subTotal = subTotal + (sale->quantity[i] * sale->unitPrice[i]);
if (sale->taxStatus[i] = "y")
{
hst = hst + ((sale->quantity[i] * sale->unitPrice[i]) * 0.13);
}
}
cout << "\n" << "Subtotal : " << subTotal << endl;
cout << "HST (13%) : " << hst;
}
答案 0 :(得分:4)
if (sale->taxStatus[i] == 'y')
正如@jweyrich和@AustinPhillips也指出你需要双等号(==)并且用单引号比较字符。
单等号(=)用于赋值。
e.g。 s = 5;
双等号(==)用于检查两个或两个以上值的相等性。
e.g。 if( s == d && d== e && e == f && f == b ) { };
带有感叹号的等号(!=)用于检查两个或两个以上值的不等式。
e.g。 if( s != d && d != e && e != f && f != b ) { };
答案 1 :(得分:0)
首先,正如已经提到的那样if (sale->taxStatus[i] = "y")
是分配而不是比较!
但主要问题是:sale
(函数参数)是一个数组(大小为sales
),但是你可以访问它(在for
body中){{1 }} ...
正确的访问权限必须为Sale*
,因为索引sale[i]->taxStatus
指向数组i
内部,但不指向sale
! (顺便说一句,如果taxStatus
你会得到UB)。那么您需要使用sales > MAX_SALES
与strcmp
字面值进行比较...