我正在为一个类的项目工作,但不断收到错误:没有重载函数的实例匹配参数列表。它引用了我的String类。我想要做的是使用字符串类创建一个Copy,Concat和Count函数。任何帮助将不胜感激。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
class String
{
private:
char str[100];
char cpy[100];
public:
static const char NULLCHAR = '\0';
String()
{
str[0] = NULLCHAR;
cpy[0] = NULLCHAR;
}
String(char* orig, char* cpy)
{
Copy(orig, cpy);
}
void Display()
{
cout << str << endl;
}
void Copy(char* orig, char* dest)
{
while (*orig != '\0') {
*dest++ = *orig++;
}
*dest = '\0';
}
void Copy(String& orig, String& dest)
{
Copy(orig.str, dest.cpy);
}
void Concat(char* orig, char* cpy)
{
while (*orig)
orig++;
while (*cpy)
{
*orig = *cpy;
cpy++;
orig++;
}
*orig = '\0';
}
void Concat(String& orig, String& cpy)
{
Concat(orig.str, cpy.cpy);
}
int Length(char* orig)
{
int c = 0;
while (*orig != '\0')
{
c++;
*orig++;
}
printf("Length of string is=%d\n", c);
return(c);
}
};
int main()
{
String s;
s.Copy("Hello");
s.Display();
s.Concat(" there");
s.Display();
String s1 = "Howdy";
String s2 = " there";
String s3;
String s4("This String built by constructor");
s3.Copy(s1);
s3.Display();
s3.Concat(s2);
s3.Display();
s4.Display();
system("pause");
return 0;
}
答案 0 :(得分:0)
您的Copy
和Concat
函数看起来都有两个参数,但您只传递一个参数。如果要将它们复制到String对象中,则代码应该更像:
String Copy(char* orig)
{
// Same copy logic you have,
// except copy into "*this"
}
答案 1 :(得分:0)
正如错误消息所示,String类的构造函数没有版本采用单个参数。你有一个默认的构造函数和一个带有两个参数的构造函数。
您需要定义一个采用单个参数并初始化str
的参数答案 2 :(得分:0)
String s4(&#34;此String由构造函数&#34构建;); 这个陈述需要建构功能
String(char *);