求高手帮忙看看这个错误是怎么一回事“从类型‘const char*’到类型‘char*’的转换无效”??????????
1 #include<iostream>2 #include<cstring>
3 using namespace std;
4 class String{
5 char* p;
6 public:
7 String(){p=NULL;}
8 String(char*m):p(m){}
9 void display(){
10 cout<<p<<endl;
11 }
12 bool operator==(String& str3){
13 int i=0,j;
14 while(p[i]!='\0'||str3.p[i]!='\0'){
15 if(p[i]!=str3.p[i]) break;i++;}
16 if(p[i]=='\0'&&str3.p[i]=='\0') return true;
17 else return false;
18 }
19 };
20 int main(){
21 string x,y;
22 cin>>x;cin>>y;
23 const char * m=x.c_str();
24 const char * n=y.c_str();
25 String string1(m),string2(n); //删掉21~24行并把此行改为:String string1("dtygherth"),string2("ertgfertg"); 这样就能编译通过并且运行成功
26 if (string1==string2) cout<<"两个字符窜相等\n";
27 else cout<<"两个字符窜不相等\n";
28 }
x.cpp: 在函数‘int main()’中:
x.cpp:25:18: 错误:从类型‘const char*’到类型‘char*’的转换无效 [-fpermissive]
x.cpp:8:2: 错误: 初始化‘String::String(char*)’的实参 1 [-fpermissive]
x.cpp:25:29: 错误:从类型‘const char*’到类型‘char*’的转换无效 [-fpermissive]
x.cpp:8:2: 错误: 初始化‘String::String(char*)’的实参 1 [-fpermissive]
我只是想输入两个字符窜,然后比较下是不是完全相等!!!
给类的对象string1和string2传构造函数参数时的类型我已经作了类型转换了呀,为什么还编译出错呢?非常郁闷!
但是当给构造函数传字符窜常量时就正常,这又是为什么呢???
[ 本帖最后由 fcwr_520 于 2013-3-1 18:24 编辑 ]