gpt4 book ai didi

c++ - 扩展数组时出错 : no operator found which takes

转载 作者:行者123 更新时间:2023-11-30 02:56:12 24 4
gpt4 key购买 nike

我想在调用 addBranch 函数时将我的数组扩展一个,然后将新的 Branch 对象添加到那个扩展的空白区域,并且我试图防止我的代码发生内存泄漏。我以为我做对了,但我坚持使用这个功能。

它给我错误“binary '=' : no operator found which takes a right-hand operand of type 'Branch *' (or there are no acceptable conversion)”。我在这里需要一些帮助,将最后一个元素分配给一个新的 Branch 对象,该对象在函数终止后不会被删除。我只是 C++ 的新手,所以可能会有一些大错误。我不允许使用 vector 等。

  // ------- Adds a branch to system -------- //
void BankingSystem::addBranch(const int id, const string name){
if(isBranchExisting(id)){
cout << "\n\tBranch " << id << " already exists. Please try it with another id number.";
}
else if(!isBranchExisting(id)){
Branch* tempArray = new Branch[cntAccounts];
for(int i = 0; i<cntAccounts; i++){
tempArray[i] = allBranches[i];
}

delete[] allBranches;

allBranches = new Branch[cntAccounts+1];
for(int i = 0; i<cntAccounts; i++){
allBranches[i] = tempArray[i];
}
allBranches[cntAccounts] = new Branch(id, name); // error at this line

}
}

最佳答案

如错误消息所述,您正在尝试将指针分配给一个对象。您(可能)想要分配一个对象:

allBranches[cntAccounts] = Branch(id, name); // no "new"

我还建议您使用 std::vector<Branch>而不是手工伪造的阵列。这将修复因忘记删除 tempArray 而导致的内存泄漏。 ,或者如果您确实添加了缺失的 delete[] 则抛出异常.

此外,如果您使用 vector , 那么整个舞蹈可以替换为

allBranches.push_back(Branch(id, name));

关于c++ - 扩展数组时出错 : no operator found which takes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15839510/

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