Customer* getMemberFromID(std::string);
这是我写的定义,但我收到一些错误,说[错误]'客户'在'类商店'没有命名类型
Store:: Customer* getMemberFromID(std::string id)
{
for(int i = 0; i < members.size(); i++)
{
Customer* c = members.at(i);
if(c->getAccountID() == id)
{
return c;
}
}
return NULL;
}
答案 0 :(得分:4)
尝试
Customer* Store::getMemberFromId(std::string const& id)
很难用完整的Minimal, Complete, and Verifiable example(你应该提供),但我猜getMemberFromId
是Store
的成员函数,但是Customer
是不是 Store
的成员,您只是对命名规则感到困惑。
注意我为(std::string id)
交换(std::string const& id)
以避免在您不需要时提供额外的字符串副本。
然后你可以使用标准算法find_if
:
Customer* Store::getMemberFromId(std::string const& id)
{
auto foundPos = std::find_if(members.begin(),
members.end(),
[&](Customer* c){ return c->getAccountId() == id; });
return (foundPos==members.end())
? nullptr
: *foundPos;
}
答案 1 :(得分:2)
功能定义规则
<return type> <class name> :: <function name><Arguments>
在此更正:
Customer* Store::getMemberFromID(std::string id)
{
// code
}
答案 2 :(得分:1)
你的功能原型是错误的。
更改
Store:: Customer* getMemberFromID(std::string id)
到
Customer* store::getMemberFromID(std::string id)