源代码如下,编译的时候告诉我不能访问私有成员,可是我明明定义了友元函数,不知道为什么还是错的。 5

#include<iostream>usingnamespacestd;classstringbad{private:char*str;intlen;staticintn... #include <iostream>
using namespace std;
class stringbad
{
private:
char * str;
int len;
static int num_strings;
public:
stringbad(const char * s);
stringbad();
~stringbad();
friend ostream & operator<<(ostream & os,const stringbad & t);

};
int stringbad::num_strings=0;
stringbad::stringbad(const char *s)
{
len=strlen(s);
str=new char[len+1];
strcpy(str,s);
num_strings++;
cout<<num_strings<<":\""<<str<<"\" object created/n";
}
stringbad::~stringbad()
{
cout<<"\""<<str<<"\" object deleted";
--num_strings;
cout<<num_strings<<"left\n";
delete [] str;
}
ostream & operator<<(ostream & os,const stringbad & t)
{
cout<<t.len;
return os;
}
展开
 我来答
love淑love
2012-04-16
知道答主
回答量:39
采纳率:0%
帮助的人:21.5万
展开全部
前面的变量别定义成私有的啊
追问
可是应该没有问题的啊,我又不是直接访问私有,而且我在另外编译类似的重载问题时没有该错误,不知道为什么。
追答
我帮你试了下改成public就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式