E0312, C2664 尝试将矢量对象作为函数参数传递时出错
Posted
技术标签:
【中文标题】E0312, C2664 尝试将矢量对象作为函数参数传递时出错【英文标题】:E0312, C2664 Error When Trying to Pass a Vector Object as a Function Parameter 【发布时间】: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() 的第一个参数,然后将其与您的向量声明进行比较。会员与会员* ?选择一个并始终如一地使用它。代码看起来不错,否则。 谢谢!这有助于摆脱错误 【参考方案1】:感谢@2785528 的回复。
我与传递vector<Member*>
的方式不一致。修复该错误后,只需将 patron[index].getMemberID()
更改为 patron[index]->getMemberID()
。
【讨论】:
以上是关于E0312, C2664 尝试将矢量对象作为函数参数传递时出错的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 C++ 中执行一些 OpenGL 时出现 C2664 错误
error C2664: “CreateFileW”: 不能将参数 1 从“char *”转换为“LPCWSTR”
求助:error C2664: “CreateWindowExW”: 不能将参数 3 从“const char [8]”转换为“LPCWSTR”