如何编写此方法的定义我收到错误

时间:2017-01-30 11:05:29

标签: c++ function class header

提前谢谢 我正在尝试编写方法的定义

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

3 个答案:

答案 0 :(得分:4)

尝试

Customer* Store::getMemberFromId(std::string const& id)

很难用完整的Minimal, Complete, and Verifiable example(你应该提供),但我猜getMemberFromIdStore的成员函数,但是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)