【问题标题】:how to write the definition for this method i am getting error如何编写此方法的定义我收到错误
【发布时间】:2017-06-15 12:26:33
【问题描述】:

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

Customer* getMemberFromID(std::string);

这是我写的定义,但我收到一些错误,说 [Error] 'class Store' 中的'Customer' 没有命名类型

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

【问题讨论】:

    标签: c++ function class header


    【解决方案1】:

    试试

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

    很难说完整的Minimal, Complete, and Verifiable example(你应该真正提供),但我猜getMemberFromIdStore 的成员函数,但Customer不是 Store 的成员,你只是被命名规则弄糊涂了。

    请注意,我将 (std::string id) 替换为 (std::string const&amp; 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;
    }
    

    【讨论】:

    • 感谢我尝试的帮助,但我现在收到一条错误消息,提示 id not capture
    • 我解决了这个错误,现在弹出另一个错误说[Error] no matching function for call to 'find_if(std::vector&lt;std::basic_string&lt;char&gt; &gt;::iterator, std::vector&lt;std::basic_string&lt;char&gt; &gt;::iterator, Store::getMemberFromID(std::string)::&lt;lambda(Customer*)&gt;)'
    • @user1210000 你#include &lt;algorithm&gt;了吗? (对不起,我应该明确表示,我认为从链接中可以清楚地看到)。
    • 根据您的错误,membersstd::vector&lt;std::string&gt;,但在您的原始示例中,它显然是 Customer* 的某个容器。您确定您为 find_if 的前 2 个参数使用了正确的容器吗?
    • 我会把完整程序的链接发给你Click here on link代码现在有很多你提到的变化
    【解决方案2】:

    函数定义规则,

    <return type>  <class name> :: <function name><Arguments>
    

    在此更正:

    Customer* Store::getMemberFromID(std::string id)
    {
    // code
    }
    

    【讨论】:

      【解决方案3】:

      你的函数原型是错误的。

      改变

      Store:: Customer* getMemberFromID(std::string id)
      

      Customer* store::getMemberFromID(std::string id)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-30
        • 1970-01-01
        • 2022-06-27
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多