我目前正在为一个学校项目工作。我创建的代码是一个银行帐户系统。要访问不同的成员,我需要用户输入其成员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具有相同的结果。我的代码哪里出问题了?
另外,谢谢。
答案 0 :(得分:0)
感谢@ 2785528的答复。
我与传递vector<Member*>
的方式不一致。解决该错误后,只需将patron[index].getMemberID()
更改为patron[index]->getMemberID()
。