永发信息网

c++编译问题

答案:1  悬赏:0  手机版
解决时间 2021-04-28 07:23
  • 提问者网友:流星是天使的眼泪
  • 2021-04-27 10:30

// file string.h

#ifndef STRING_H
#define STRING_H
class String
{
public:
string(char const *chars="");
void displayString();
void changeString(int idx,char ch);
private:
char *ptrChars;
};
#endif

// file string.cpp

#include<cstring>
#include<cstdio>
#include"string.h"

String::string(char const *chars)
{
ptrChars=new char[std::strlen(chars) +1];
std::strcpy(ptrChars,chars);
}
void String::displayString()
{
std::puts(ptrChars);
}
void String::changeString(int idx,char ch)
{
ptrChars[idx]=ch;
}

// file main.cpp

#include "string.h"
int main()
{
String str("B++");
str.changeString(0,'c');
str.displayString();
}

编译总出现这个问题:

error C2664: '__thiscall String::String(const class String &)' : cannot convert parameter 1 from 'char [4]' to 'const class String &'
Reason: cannot convert from 'char [4]' to 'const class String'

咋搞...?

最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-04-27 10:36

// file string.h


#ifndef STRING_H
#define STRING_H
class String
{
public:
String(char* const chars="");
void displayString();
void changeString(int idx,char ch);
private:
char *ptrChars;
};
#endif
// file string.cpp


#include<cstring>
#include<cstdio>
#include"string.h"


String::String(char* const chars)
{
ptrChars=new char[strlen(chars) +1];
strcpy(ptrChars,chars);
}
void String::displayString()
{
puts(ptrChars);
}
void String::changeString(int idx,char ch)
{
ptrChars[idx]=ch;
}


// file main.cpp


#include "string.h"
int main()
{
String str("B++");
str.changeString(0,'c');
str.displayString();
return 0;
}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯