#include<iostream>运行时会编译错误,具体错误是error C2593: 'operator +' is ambiguous
#include<string>
using namespace std;
class Str
{
int length;
char *p;
public:
Str()
{
p=new char[100];
}
Str(char *s)
{
p=new char [100];
strcpy(p,s);
}
Str(const Str &obj)
{
p=new char [100];
strcpy(p,obj.getp());
}
~Str()
{
delete []p;
}
friend Str operator + (const Str &s1,const Str &s2);
void operator =(const Str &obj);
char* getp()const
{
return p;
}
void setp(char *s)
{
strcpy(p,s);
}
void show()
{
length=strlen(p);
cout<<"length="<<length<<" "<<p<<endl;
}
};
Str operator+(const Str &s1,const Str &s2)
{
Str temp;
strcpy(temp.getp(),s1.getp());
strcat(temp.getp(),s2.getp());
return temp;
}
void Str::operator =(const Str &obj)
{
strcpy(p,obj.getp());
}
int main()
{
char s1[100],s2[100];
cin.getline(s1,100);
cin.getline(s2,100);
Str A(s1);
Str B(s2);
Str C;
C=A+B;
C.show();
return 0;
}
这问题该如何解决
10 个解决方案
#1
vs2012测试,没有编译错误啊!!!
#2
运行也是OK的,你用什么编译器测试的??
#3
VC6.0.......
#4
友元函数定义函数放在类内试试
#5
char* getp()const
#6
友元函数定义函数放在类内试试 VC6.0.......
运行也是OK的,你用什么编译器测试的??
#7
可以了!这是为什么啊? 友元函数定义函数放在类内试试 VC6.0.......
运行也是OK的,你用什么编译器测试的??
#8
友元放类里面跟外面运行上有差别吗? 可以了!这是为什么啊? 友元函数定义函数放在类内试试 VC6.0.......
运行也是OK的,你用什么编译器测试的??
#9
建议你换一个IDE,VC6太老了,换成VS
地址:http://blog.csdn.net/cometnet/article/details/19551125
如果觉得VS太大就下个轻量级的IDE,比如CODEBLOCKS
地址:http://blog.csdn.net/cometnet/article/details/19551125
如果觉得VS太大就下个轻量级的IDE,比如CODEBLOCKS
#10
VC6.0.......
运行也是OK的,你用什么编译器测试的??
VC6对很多标准的支持都不好
#1
vs2012测试,没有编译错误啊!!!
#2
运行也是OK的,你用什么编译器测试的??
#3
运行也是OK的,你用什么编译器测试的??
#4
VC6.0.......
运行也是OK的,你用什么编译器测试的??
#5
char* getp()const
#6
友元函数定义函数放在类内试试 VC6.0.......
运行也是OK的,你用什么编译器测试的??
#7
可以了!这是为什么啊? 友元函数定义函数放在类内试试 VC6.0.......
运行也是OK的,你用什么编译器测试的??
#8
友元放类里面跟外面运行上有差别吗? 可以了!这是为什么啊? 友元函数定义函数放在类内试试 VC6.0.......
运行也是OK的,你用什么编译器测试的??
#9
建议你换一个IDE,VC6太老了,换成VS
地址:http://blog.csdn.net/cometnet/article/details/19551125
如果觉得VS太大就下个轻量级的IDE,比如CODEBLOCKS
地址:http://blog.csdn.net/cometnet/article/details/19551125
如果觉得VS太大就下个轻量级的IDE,比如CODEBLOCKS
#10
VC6.0.......
运行也是OK的,你用什么编译器测试的??
VC6对很多标准的支持都不好