|
新手关于复制构造函数的问题,望高手帮忙费点时间看看!
自己编了一个字符串类代码如下:
#include <iostream>
using namespace std;
const int n=40;
class mystring {
char str[n];
int maxsize;
int last;
public:
mystring(){
last=0;
maxsize=n;
str[0]='\0';
}
mystring(char *s){
last=-1;
maxsize=n;
do{
last++;
str[last]=s[last];
}while(s[last]!='\0'&&last<maxsize-1);
str[last]='\0';
}
mystring(mystring &ms){
last=ms.last;
maxsize=ms.maxsize;
do{
last++;
str[last]=ms.str[last];
}while(ms.str[last]!='\0'&&last<maxsize-1);
str[last]='\0';
}
~mystring(){}
void show(){
cout<<str<<endl;
}
bool operator<(mystring &);
mystring & operator=(char *s);
char operator[](int);
mystring operator+(mystring &);
mystring operator+=(mystring &);
bool operator>(mystring &);
bool operator==(mystring &);
};
bool mystring:: operator<(mystring &ms){
int i=0,k;
do{
k=str-ms.str;
i++;
}while(k==0&&i<last&&i<ms.last);
if(k<0) return true;
if(i==last&&i!=ms.last) return true;
return false;
}
mystring &mystring:: operator=(char *s){
last=-1;
do{
last++;
str[last]=s[last];
}while(s[last]!='\0'&&last<maxsize-1);
str[last]='\0';
return *this;
}
char mystring:: operator[](int i){
return *(str+i);
}
mystring mystring:: operator+(mystring &ms){
int i=0;
// mystring str;
for( i=0; str!='\0';i++ ){;
}
for( int j=0;*(ms.str+j)!='\0' &&i<ms.maxsize-1;j++ ){
str[i++]=ms.str[j];
}
str='\0';
return *this;
}
mystring mystring:: operator+=(mystring &ms){
int i=0;
// mystring str;
for( i=0; str!='\0';i++ ){;
}
for( int j=0;*(ms.str+j)!='\0' &&i<maxsize-1;j++ ){
str[i++]=ms.str[j];
}
str='\0';
return *this;
}
bool mystring:: operator>(mystring &ms){
int i=0,k;
do{
k=str-ms.str;
i++;
}while(k==0&&i<last&&i<ms.last);
if(k>0) return true;
if(i!=last&&i==ms.last) return true;
return false;
}
bool mystring:: operator==(mystring &ms){
int i=0,k;
do{
k=str-ms.str;
i++;
}while(k==0&&i<last&&i<ms.last);
if(i==last&&i==ms.last) return true;
return false;
}
一个主程序如下:
#include <iostream>
#include "mystring.h"
using namespace std;
template<typename T>void bubblesort(T *slist,int n){
bool noswap;
int i,j;
T temp;
for( i=0;i<n-1 ;i++ ){
noswap=true;
for( j=n-1;j>i ;j-- ){
if(slist[j]<slist[j-1]){
temp=slist[j];
slist[j]=slist[j-1];
slist[j-1]=temp;
noswap=false;
}
}
if(noswap) break;
}
}
int main(){
const int h=10;
int i;
mystring list[10]={"cat","book","car","zoo","fish","cab","dog","cap","fox","can",""};
cout<<"未排序数组:"<<endl;
for( i=0;i<h ;i++ ){
list.show();
}
bubblesort(list,h);
cout<<"已排序数组:"<<endl;
for( i=0;i<h ;i++ ){
list.show();
}
return 0;
编译时出现如下问题,请帮忙费点时间看看
bubble.cpp: In function ‘int main()’:
bubble.cpp:26: 错误:‘mystring [10]’的初始值设定项太多
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystring(char*)
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystring(char*)
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystring(char*)
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystring(char*)
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystring(char*)
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystring(char*)
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystring(char*)
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystring(char*)
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystring(char*)
bubble.cpp:26: 警告:不建议使用从字符串常量到‘char*’的转换
bubble.cpp:26: 错误:对‘mystring::mystring(mystring)’的调用没有匹配的函数
mystring.h:24: 附注:备选为: mystring::mystring(mystring&)
mystring.h:15: 附注: mystring::mystrin |
|