带有指针的动态分配
Dynamic Allocation with pointers c++
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到数组,但我得到错误'不匹配'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)
来获得更好的性能和直接在容器内构造Transaction对象。
用std::vector
代替:
std::vector<Transaction> trans;
trans.reserve(MAX_NUM);
和addtrans
基本可以简化为:
trans.emplace_back(balance, amt);
相关文章:
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 使用指针在存在特征库的情况下动态分配 c++ 中的矩阵
- 尝试创建指向动态分配的字符数组的指针
- 如何动态分配由三重指针到类的矩阵?
- 将数组动态分配到具有指针参数的函数中
- 如何从文件读取到动态分配的指向结构的指针链表中?
- 是否可以将函数动态分配给函数指针
- 将动态分配的对象添加到对象指针数组中
- 如何为const char double指针(使用新的)动态分配内存
- 动态分配的矩阵不会获得指向指针的指针
- 使用 new: "potentially uninitialized pointer"将对象数组动态分配给指针
- 将运算符重写应用于具有动态分配指针的类
- 我可以动态分配以前分配的内存,但用不同的指针分配
- C 删除指向动态分配对象的指针
- 在动态分配的指针数组中扩展内存
- 指针数组在动态分配时应指向什么
- 向一系列指针及其替代方案的动态分配
- 如何删除用于动态分配对象的智能指针
- 我如何检查该点动态分配的单指针是否为null
- 指针动态分配(核心倾倒)