E0312,C2664尝试将矢量对象作为功能参数传递时出错

时间:2019-03-10 12:37:59

标签: c++ function vector

我目前正在为一个学校项目工作。我创建的代码是一个银行帐户系统。要访问不同的成员,我需要用户输入其成员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具有相同的结果。我的代码哪里出问题了?
另外,谢谢。

1 个答案:

答案 0 :(得分:0)

感谢@ 2785528的答复。

我与传递vector<Member*>的方式不一致。解决该错误后,只需将patron[index].getMemberID()更改为patron[index]->getMemberID()