我收到“请求从‘std::string (*)[50]’到非标量类型‘std::string’的转换”错误并且似乎无法修复它
I am getting a " conversion from ‘std::string (*)[50]’ to non-scalar type ‘std::string’ requested" error and cant seem to fix it
这是我正在编写的程序的开头。如您所见,它是不完整的,但我在检查我的程序是否存在错误时遇到了这个错误。我查了一下,找到了解决方案,例如 "do not include brackets while calling a multidim array" 我更正并得到了这个错误。关于如何解决它有什么建议吗?
#include<iostream>
#include<string>
#include<cmath>
#include<cstdlib>
#include<fstream>
using namespace std;
void readEmployees();
void readPasswords();
void mixPasswords(string(*)[50], string[], string(*)[50]);
string employee[50][50];
string passwords[50];
string passwordsAssigned[50][50];
int main()
{
readEmployees();
readPasswords();
mixPasswords(employee, passwords, passwordsAssigned);
return 0;
}
void readEmployees()
{
int y;
ifstream fileInput;
fileInput.open("employees.txt");
for(int x = 0; x < 50; x++)
{
fileInput >> employee[x][y] >> employee[y][x];
y++;
}
}
void readPasswords()
{
ifstream fileInput;
fileInput.open("passwords.txt");
for(int x = 0; x < 50; x++)
{
fileInput >> passwords[x];
}
}
void mixPasswords(string employee(*)[50], string passwords[], string completed(*)[50])
{
}
您的声明 void mixPasswords(string, string, string);
与您传递给它的参数类型不匹配。您需要将声明更改为
void mixPasswords(string[][50], string[], string[][50]);
此外,您对 mixPasswords
的定义并未定义先前声明的函数,因为其参数列表与声明不匹配。相反,它声明并定义了一个新的、未使用的、采用不同参数集的 mixPasswords
重载。您需要使您的声明和定义匹配。
这是我正在编写的程序的开头。如您所见,它是不完整的,但我在检查我的程序是否存在错误时遇到了这个错误。我查了一下,找到了解决方案,例如 "do not include brackets while calling a multidim array" 我更正并得到了这个错误。关于如何解决它有什么建议吗?
#include<iostream>
#include<string>
#include<cmath>
#include<cstdlib>
#include<fstream>
using namespace std;
void readEmployees();
void readPasswords();
void mixPasswords(string(*)[50], string[], string(*)[50]);
string employee[50][50];
string passwords[50];
string passwordsAssigned[50][50];
int main()
{
readEmployees();
readPasswords();
mixPasswords(employee, passwords, passwordsAssigned);
return 0;
}
void readEmployees()
{
int y;
ifstream fileInput;
fileInput.open("employees.txt");
for(int x = 0; x < 50; x++)
{
fileInput >> employee[x][y] >> employee[y][x];
y++;
}
}
void readPasswords()
{
ifstream fileInput;
fileInput.open("passwords.txt");
for(int x = 0; x < 50; x++)
{
fileInput >> passwords[x];
}
}
void mixPasswords(string employee(*)[50], string passwords[], string completed(*)[50])
{
}
您的声明 void mixPasswords(string, string, string);
与您传递给它的参数类型不匹配。您需要将声明更改为
void mixPasswords(string[][50], string[], string[][50]);
此外,您对 mixPasswords
的定义并未定义先前声明的函数,因为其参数列表与声明不匹配。相反,它声明并定义了一个新的、未使用的、采用不同参数集的 mixPasswords
重载。您需要使您的声明和定义匹配。