回 帖 发 新 帖 刷新版面

主题:友元函数调用不了私有成员??

class String
{
public:
    String(){p=NULL;}
    String(char *str);
    void display();
    friend bool operator>(String&,String&);
private:
    char*p;
};

String::String(char *str):p(str){}

void String::display()
{cout<<p<<endl;}

bool operator>(String &string1,String &string2)
{
    if(strcmp(string1.p,string2.p)>0)     这里出错!!出错原因是无法得到        return true;                string类的私有成员??
    else return false;
}


而且这个类定义还是书上有的,,我只是一字不动的试着运行,,却不行。。。我想不明白。。望各位大侠不吝赐教!!

回复列表 (共4个回复)

沙发

我试着编译了一下,是没有错的。我用的是VS2008

板凳

应该就是编译器的问题,友元函数定义不就是为了操作类的私有成员吗 !

3 楼

可以的啊,我用vc6试了一下可以运行的,只是里面用了strcmp(),要包含库string.h

4 楼

友元函数可以带用私有变量的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册