错误很离谱 ,求指教
astring::astring(const char *init){
int len=strlen(init);
maxsize=(len>defaultsize)?len:defaultsize;
ch=new char[maxsize+1];
if(ch==NULL){cerr<<"存储分配失败\n";exit(1);}
curlength=len;
strcpy(ch,init);
}
f:\p4_2\astring.h(28) : error C2143: syntax error : missing ')' before ';'
f:\p4_2\astring.h(28) : error C2059: syntax error : ')'
f:\p4_2\astring.h(28) : error C2143: syntax error : missing ';' before '?'
执行 cl.exe 时出错.
p4_2.exe - 1 error(s), 0 warning(s)
[解决办法]
x.cpp
- C/C++ code
#include<cstdlib>#include<iostream>#include<cstring>using namespace std;#define defaultsize 128//;class astring{public: astring(int sz); astring(const char * init); ~astring(){delete []ch;} char& operator[] (int i); void frequency(char *p);private: char *ch; int curlength; int maxsize;};astring::astring(int sz){ maxsize=defaultsize; ch=new char[maxsize+1]; if(ch==NULL){cerr<<"Allocation error\n";exit(1);} curlength=0; ch[0]='\0';}astring::astring(const char *init){ int len=strlen(init); maxsize=(len>defaultsize)?len:defaultsize; //这行的错误,说是少分号括号的 ch=new char[maxsize+1]; if(ch==NULL){cerr<<"存储分配失败\n";exit(1);} curlength=len; strcpy(ch,init);}char& astring::operator [] (int i){ if(i<0||i>=curlength) {cout<<"字符串下标越界!\n";exit(1);} return ch[i];}void astring::frequency(char* p){ int count=0,m; for(int i=0;p[i]!='\0';i++){ m=p[i]; for(int j=i;p[j]!='\0';j++) if(p[j]==m) {count++;p[j]='#';} cout<<"字符串中"<<m<<"出现"<<count<<"次"<<endl; }}int main(){ return 0;}