E0312,C2664尝试将向量对象作为函数参数传递时错误

E0312, C2664 Error When Trying to Pass a Vector Object as a Function Parameter

本文关键字:函数 参数传递 错误 对象 向量 C2664 E0312      更新时间:2023-10-16

我目前正在开展学校项目。我要创建的代码是银行帐户系统。要访问不同的成员,我正在让用户输入其成员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的结果相同。我的代码在哪里出错?
另外,谢谢。

感谢 @2785528的响应。

我与通过vector<Member*>的方式不一致。一旦解决了该错误,就需要完成的只是将patron[index].getMemberID()更改为patron[index]->getMemberID()