我自己定义了一个字符串类,实现一些基本的功能,源程序如下:#include "iostream.h"class String{public:      String();
void Reverse();
void PrintLine();
void WordCount();
void SubString(int i,int j);private: int length;
 int words;
 char *str;
}String::String()
{  
cout<<"输入你的字符串"<<endl;
cin>>str;
int i=0;
while (str[i]!='\0')
    i++;
length=i;

}void String::PrintLine()
{
    cout<<"你的字符串是:"<<str<<endl;
}void String::Reverse()
{
int i,j;
char a;
for(i=0,j=length-1;i<j;i++,j--)
{
a=str[i];
str[i]=str[j];
str[j]=a;
}
}void String ::WordCount()
{
int i;
words=0;
for(i=0;i<length;i++)
if(str[i]>'z'&&str[i]<'A')
words++;
cout<<" 字符串有"<<words<<"个单词"<<endl;
}void String::SubString(int i,int j)
{
int k;
cout<<"子串是:";
for(k=i;k<=j;k++)
cout<<str[i];
}void main()
{
    String s;
int i=0;
int j,k;
while(i!=5)
{
cout<<"从以下选择你需要的操作"<<endl;
cout<<" 1:将字符串倒转"<<endl;
cout<<" 2:输出字符串  "<<endl;
cout<<" 3:计算单词数  "<<endl;
cout<<" 4:获取子串    "<<endl;
cout<<" 5:退出        "<<endl;
        
cin>>i;
switch(i)
{
case 1:{
s.Reverse();break;
   }
case 2:{
s.PrintLine();break;
   }
case 3:
{
s.WordCount();break;
}
case 4:{
cout<<"输入起始位置j和结束位置k"<<endl;
cin>>j>>k;
s.SubString(j,k);
break;
   }
case 5:{
cout<<"*********"<<"退出"<<"********"<<endl;
break;
   }
}
}
}我在编译时总是出现这样的错误:
E:\c++作业\字符串类\STRING.CPP(17) : error C2533: 'String::String' : constructors not allowed a return type
E:\c++作业\字符串类\STRING.CPP(66) : error C2264: 'String::String' : error in function definition or declaration; function not called我不知道构造函数到底出了什么问题?

解决方案 »

  1.   

    class String{public:      String();
    void Reverse();
    void PrintLine();
    void WordCount();
    void SubString(int i,int j);private: int length;
     int words;
     char *str;
    };//注意:这里必须有分号
      

  2.   

    class String{
       //
    }; // 类定义后面要加分号。
      

  3.   

    建议你将声明(*.h)与实现(*.cpp)分放于不同的文件,这样编译器可以帮你较准确的定位错误。
      

  4.   

    e:\vcvc\string.h(17) : error C2533: 'String::String' : constructors not allowed a return type
    E:\vcvc\dfg.cpp(6) : error C2264: 'String::String' : error in function definition or declaration; function not called就是类后面的哪个分号
    class String{
       //
    }; // 类定义后面要加分号。