Transaction *trans = new Transaction[MAX_NUM];
int currentnum;
addtrans(string balance, double amt){
trans[currentnum] = new Transaction(balance, amt);
currentnum ++;
}
//constructor
Transaction(string type, double amt){
Transtype = type;
Transamt = amt;
}
我已经创建了一个指向数组的指针。
我正在尝试向数组发送余额和amt,但我收到的错误是'不匹配'运营商=''
答案 0 :(得分:2)
Transaction *trans = new Transaction[MAX_NUM];
这为您提供了一个指向Transaction
个对象数组的指针。
trans[currentnum] = new Transaction(balance, amt);
这会尝试分配到数组中的Transaction
对象,但new Transaction(...)
调用会将 指针 返回给Transaction
并且指针不是数组的数据元素类型,因此不会编译。
你可以说:
trans[currentnum] = Transaction(balance, amt);
或者,你可以这样做:
Transaction** trans = new (Transaction*)[MAX_NUM];
trans[currentnum] = new Transaction(balance, amt);
但使用它几乎肯定更好:
std::vector<Transaction> trans(MAX_NUM);
如果你真的必须有MAX_NUM
默认构造的元素,或者更好......
std::vector<Transaction> trans;
当你走的时候只有.push_back(Transaction(balance,amt))
,所以你基本上不必担心任何MAX_NUM
或索引容器的末尾。如果你有一个C ++ 11编译器,你可以使用.emplace_back(balance, amt)
来获得更好的性能并直接在容器中构造Transaction对象。
答案 1 :(得分:0)
改为使用std::vector
:
std::vector<Transaction> trans;
trans.reserve(MAX_NUM);
和addtrans
基本上可以简化为:
trans.emplace_back(balance, amt);