gpt4 book ai didi

c++ - 带指针的动态分配 C++

转载 作者:行者123 更新时间:2023-11-28 02:53:00 26 4
gpt4 key购买 nike

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;
}

我创建了一个指向数组的指针。

我正在尝试将余额和金额发送到数组,但出现错误“不匹配‘operator=’”

最佳答案

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) 以获得更好的性能并直接在容器内构建事务对象。

关于c++ - 带指针的动态分配 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22624038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com