C++ 从树中检索对象
c++ retrieving object from tree
我正在做一个项目,其中我有一个存储不同资金余额的账户类。每个账户对象有 10 个资金,它们从 0 开始,可以进行存款、取款和转账等交易。我需要将这些帐户存储在二叉搜索树中,因为它们被添加,并且我的检索功能遇到了问题。代码如下:
bool Retrieve(const int & acctNum, Account* acctPtr)
{
if (Search(root, acctPtr, acctNum))
return true;
else
return false;
}
bool Search(Node* temp, Account* acctPtr, int acctNum)
{
if (temp == NULL) {
return false;
}
else if (temp->pAcct->getAcct() == acctNum)
{
acctPtr = temp->pAcct;
return true;
}
else if (acctNum <= temp->pAcct->getAcct())
{
return Search(temp->left, acctPtr, acctNum);
}
else
{
return Search(temp->right, acctPtr, acctNum);
}
}
我遇到的问题是,当我存入帐户,然后检索并尝试提款时,它没有给我相同的帐户。相反,它只是尝试从具有所有 0 个余额的帐户中提取。我的目的是让acctPtr指向正确的帐户来进行转账/取款/存款。以下是我从用于完成事务的不同类调用检索的方式:
if (transType == "D")
{
iss >> acctNum >> amt;
fund = parseCommand(acctNum);
acctNum = acctNum.substr(0, acctNum.length() - 1);
Account * d = new Account("name", stoi(acctNum));
if (bST->Retrieve(stoi(acctNum), d))
{
d->deposit(fund, amt);
cout << d->getFundBalance(fund) << endl; //for checking, will remove
}
}
else if (transType == "W")
{
iss >> acctNum >> amt;
fund = parseCommand(acctNum);
acctNum = acctNum.substr(0, acctNum.length() - 1);
Account * wD = new Account("name", stoi(acctNum));
if (bST->Retrieve(stoi(acctNum), wD))
{
wD->withdraw(fund, amt);
cout << wD->getFundBalance(fund) << endl; //for checking, will remove
}
}
上面的 if 语句只是检查给定时间的交易类型。
在搜索函数中,使用参数 acctPtr 作为输出(您为其分配了一个新值(。
但是您的指针不是输出参数。
您应该使用帐户**或帐户*&。
并且您必须像这样使用检索方法:
Account* d = NULL;
if(bST->Retrieve(stoi(acctNum),&d /* or just d if Account*& */))
{ ... }
如果您使用帐户**版本,请不要忘记为指针分配
*acctPtr = temp->pAcct;
相关文章:
- 如何检索由带通配符的字符串索引的对象
- 用于从可能不存在的容器中检索对象的 API 设计
- 在 c++ 中使用指向对象的指针检索数据
- 通过 std::bind 从对象成员检索值
- 将 JSON 对象作为参数在 JNI 中传递给 CPP,并在 CPP 中检索 JSON 对象的数据
- C++ 从树中检索对象
- 检索不同类型的对象指针
- 如何在Boost Serialization中检索多个对象值
- 使用Boost序列化保存和检索多个对象
- C++ 无法检索自定义矢量中的对象
- 如何通过先前存储的ID从结构对象中检索值?C
- 在另一个中检索JSON对象
- c++使用字符串句柄对对象进行通用存储和检索
- 插入>>运算符重载:从 CIN 检索对象的 CTOR 参数时的异常处理
- 根据对象的类型从矢量中检索对象
- 仅检索对象的类型
- 从数组中检索对象的值
- 从boost::optional中检索对象
- 从映射中检索对象实例
- 检索对象的函数操作符的参数类型