【问题标题】:E0312, C2664 Error When Trying to Pass a Vector Object as a Function ParameterE0312, C2664 尝试将矢量对象作为函数参数传递时出错
【发布时间】:2019-03-10 12:37:59
【问题描述】:

我目前正在为学校做一个项目。我正在创建的代码是一个银行账户系统。为了访问不同的成员,我让用户输入他们的成员 ID,该 ID 作为参数之一传递给名为 findMember 的函数。
函数如下:

int findMember(vector<Member> patron, int memID)
{
    int vectorSize;
    vectorSize = patron.size();
    for (int index = 0; index < vectorSize; index++)
    {
        if (memID == patron[index].getMemberID())
            return index;
    }
}

这是矢量:

vector<Member*> patron; // Vector to store the members.

这是函数调用:

int acctID, memberIndex;
cout << "Enter your Account ID: ";
cin >> acctID;

memberIndex = findMember(patron, acctID);   // Helps find the index if the current stored member.
patron[memberIndex]->menu();                // Opens the current members 
storage location.    

错误代码如下:

Error (active)  E0312   no suitable user-defined conversion from "std::vector<Member *, std::allocator<Member *>>" to "std::vector<Member, std::allocator<Member>>" exists
Error C2664 'int findMember(std::vector<Member,std::allocator<_Ty>>,int)': cannot convert argument 1 from 'std::vector<Member *,std::allocator<_Ty>>' to 'std::vector<Member,std::allocator<_Ty>>'

我在网上搜索了 E0312,但没有找到抛出它的原因。 C2664 也有同样的结果。我的代码哪里出了问题?
另外,提前致谢。

【问题讨论】:

  • 很好地提交了问题。现在,查看 findMember() 的第一个参数,然后将其与您的向量声明进行比较。会员与会员* ?选择一个并始终如一地使用它。代码看起来不错,否则。
  • 谢谢!这有助于摆脱错误

标签: c++ function vector


【解决方案1】:

感谢@2785528 的回复。

我与传递vector&lt;Member*&gt; 的方式不一致。修复该错误后,只需将 patron[index].getMemberID() 更改为 patron[index]-&gt;getMemberID()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 2019-09-14
    • 2021-02-10
    • 1970-01-01
    • 2019-10-18
    • 2018-02-23
    • 2012-05-30
    相关资源
    最近更新 更多