这个程序会显示:error C2248: 'p' : cannot access private member declared in class 'String'

#include <iostream>
#include <string>
using namespace std;
class String
{
public:
String(){p=NULL;}
String(char *str);
friend bool operator<(String &string1,String &string2);
void display();
private:
char *p;};
String::String(char *str)
{p=str;}
void String::display()
{cout<<p;}
bool operator>(String &string1,String &string2)
{if(strcmp(string1.p,string2.p)>0)
return true;
else return false;}
void main()
{String string1("hello"),string2("book");
cout<<(string1>string2)<<endl;}

如果你用的而是vc6,这应该是个别中文版的问题,就是友元有点问题,将运算符改为成员重载就可以了,程序中还有一点小错误,一并改正如下:
#include <iostream>
#include <cstring>
using namespace std;
class String
{
public:
String(){p=NULL;}
String(char *str);
bool operator>(String &string2);
void display();
private:
char *p;
};
String::String(char *str)
{p=str;}
void String::display()
{cout<<p;}
bool String::operator>(String &string2)
{if(strcmp(p,string2.p)>0)
return true;
else return false;}
void main()
{String string1("hello"),string2("book");
cout<<(string1>string2)<<endl;}来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网