【发布时间】:2021-10-11 18:21:22
【问题描述】:
void DISPLAY(user u[],int Tuser);
struct user
{
queue<float> time ;
queue<string> purpse;
}users[5];
int main()
{
//codes
DISPLAY(users,Tuser);//here is the problem
return 0;
}
void DISPLAY(user u[], int Tuser)
{
for (int i = 0; i < Tuser; i++)
{
while (!(u[i].purpse.empty()))
{
cout << u[i].purpse.front()<<"\n";
u[i].purpse.pop();
}
cout << "\n";
while (!(u[i].time.empty()))
{
cout << u[i].time.front()<<"\n";
u[i].time.pop();
}
cout << "\n";
}
}
它说这一行有错误:
DISPLAY(users,Tuser);
解决办法是什么?
Error (active) E0308 多个重载函数“DISPLAY”实例与参数列表匹配:
【问题讨论】:
-
点击带有“重新定义”的错误行。去看看之前的定义。应该解释问题。
-
请创建一个minimal reproducible example 并将错误(或者更好的是编译器输出)作为文本而不是图像发布。
-
我会更关心非法使用类型 void 错误。我认为您将代码最小化太多而忽略了实际错误。您还应该查看“输出”选项卡中的错误。请记住,按文件顺序查看错误很重要,因为 1 个错误可能会导致许多其他错误。
-
这是一个 IntelliSense “提示”,是您的问题中最不重要的。一旦你解决了其他实际问题,它就会消失。 (我建议您关闭 IntelliSense,直到您有足够的经验以合理的准确度从真实错误中分辨出误报。)
-
不就是不能定义两次DISPLAY函数吗?
标签: c++ visual-c++ c++17