[英]Why do I get this error message: “undefined reference to `PerformChat(char*, char*, char*, char*, char*)'”
[英]Why I get error convert from char to char?
这是我的代码:
#include <iostream>
using namespace std;
bool funkcja (char * a[3][7], char * b[7]);
int main()
{
char T[3][7]={{'A', 'L', 'A', 'M','A', 'k', 'o'},
{'M', 'A','M','K','O','T','A'},
{'T', 'E','Q','U','I','L','A'}};
char tab[7]={ 'A', 'L', 'A', 'M','A', 'k', 'o' };
cout<<funkcja(T, tab)<<endl;
return 0;
}
bool funkcja (char * a[3][7], char * b[7])
{
int licznik=0;
for (int i=0;i<3;i++)
{
for (int j=0; j<7;j++)
{
if (a[i][j]==b[j])
{
licznik++;
if (licznik==7) return true;
}
else {
licznik=0;
}
}
licznik=0;
}
return false;
}
当我尝试构建它时,我得到:
[Error] cannot convert 'char (*)[7]' to 'char* (*)[7]' for argument '1' to 'bool funkcja(char* (*)[7], char**)'
您的函数定义不正确。 您需要更改:
bool funkcja (char * a[3][7], char * b[7])
至:
bool funkcja (char a[3][7], char b[7])
请注意,您可以省略第一个数组维,因此可以将其减少为:
bool funkcja (char a[][7], char b[])
您的funkcja
接受两个指针数组,但您正在将其传递给chars数组。
您应该将签名更改为:
bool funkcja (char a[][7], char b[]);
您在funkcja
传递的参数和参数类型之间的类型不匹配。 其他答案对此进行了解释。 此外,您还可以通过引用传递数组,最简单的方法是使用模板。 这样,您还可以在编译时传递它们的大小。
#include <iostream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
template<int N, int M>
bool funkcja (char (&a)[N][M], char (&b)[M]);
int main()
{
char T[3][7]={{'A', 'L', 'A', 'M','A', 'k', 'o'},
{'M', 'A','M','K','O','T','A'},
{'T', 'E','Q','U','I','L','A'}};
char tab[7]={ 'A', 'L', 'A', 'M','A', 'k', 'o' };
cout<<funkcja(T, tab)<<endl;
return 0;
}
template<int N, int M>
bool funkcja (char (&a)[N][M], char (&b)[M])
{
int licznik=0;
for (int i=0;i<N;i++)
{
for (int j=0; j<M;j++)
{
if (a[i][j]==b[j])
{
licznik++;
if (licznik==M) return true;
}
else {
licznik=0;
}
}
licznik=0;
}
return false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.