【发布时间】:2017-04-24 18:22:12
【问题描述】:
所以,我正在编写一个代码来根据银行交易计算金额。 我创建了一个枚举类来识别 SALE = 1、VALUEADDED = 2、CREDIT = 3、CANCEL = 4、PROMO = 5、DISCOUNT =6 和 INTERTERRITORY = 7。
这是一个事务类,TransactionType是枚举。
class transaction {
public:
enum class TransactionType { sale = 1, valueadded, credit, cancel, promo, discount, interterritory };
transaction(int transactionId, int salerepId, int transactionType, int amount) {
this->transactionId = transactionId;
this->salerepId = salerepId;
this->transactionType = static_cast<TransactionType>(transactionType);
this->amount = amount;
}
void print() {
cout << transactionId << "\t\t" << salerepId << "\t\t";
switch (transactionType)
{
case TransactionType::sale:
cout << "SALE";
break;
case TransactionType::valueadded:
cout << "VALUEADDED";
break;
case TransactionType::credit:
cout << "CREDIT";
break;
case TransactionType::cancel:
cout << "CANCEL";
break;
case TransactionType::promo:
cout << "PROMO";
break;
case TransactionType::discount:
cout << "DISCOUNT";
break;
case TransactionType::interterritory:
cout << "INTERTERRIOTY";
break;
default:
cout << "UNIDENTIFIED";
break;
}
cout << "\t\t" << amount << endl;
}
TransactionType transactionType;
private:
int transactionId;
int salerepId;
int amount;
};
下面的代码是我想根据交易类型计算金额。 (Territory_output 是另一个给出金额输出的类,而 salerep::amount 是来自不同类的另一个实例,它给出初始金额。
territory_output tAmount;
if (transaction::transactionType == transaction::TransactionType::sale) {
tAmount.territoryAmount += salerep::amount * 1.1;
return tAmount.territoryAmount;
}
if (transaction::transactionType == transaction::TransactionType::valueadded) {
tAmount.territoryAmount += salerep::amount * 1.1;
return tAmount.territoryAmount;
}
if (transaction::transactionType == transaction::TransactionType::credit) {
tAmount.territoryAmount -= salerep::amount * 1;
return tAmount.territoryAmount;
}
if (transaction::transactionType == transaction::TransactionType::cancel) {
tAmount.territoryAmount -= salerep::amount * 1.25;
return tAmount.territoryAmount;
}
if (transaction::transactionType == transaction::TransactionType::promo) {
tAmount.territoryAmount -= salerep::amount * 0;
return tAmount.territoryAmount;
}
if (transaction::transactionType == transaction::TransactionType::discount) {
tAmount.territoryAmount -= salerep::amount *1.1;
return tAmount.territoryAmount;
}
if (transaction::transactionType == transaction::TransactionType::interterritory) {
tAmount.territoryAmount += salerep::amount *0.75;
return tAmount.territoryAmount;
}
我收到错误消息“非静态成员引用必须相对于特定对象。”用于调用 transaction::TransactionType 作为枚举。 我得到了同样的错误“非静态成员引用必须相对于特定对象。”出售代表::数量。 有人可以帮忙吗? 这是一张表的图片,说明了归属。The table of Transaction Type & Attribution Rule
【问题讨论】:
-
这不是
enum- 你的transaction类没有名为transactionType的static成员 -
你想用
transaction::transactionType表示什么?
标签: c++ class enums enumeration