我用vc6编译《c++ primer plus》第四版 中文版第364页程序12.4的时候出现了问题:
我按照书上代码输入,vc6编译的时候却提示:
String.cpp(80) : error C2248: 'str' : cannot access private member declared in class 'String'
竟然不允许我的友元函数访问私有变量,我可是把函数声明成了友元呀!
不过用g++确可以编译,奇怪!!
源码在这儿:
http://kuga.51.net/temp/cpp1.zip
我按照书上代码输入,vc6编译的时候却提示:
String.cpp(80) : error C2248: 'str' : cannot access private member declared in class 'String'
竟然不允许我的友元函数访问私有变量,我可是把函数声明成了友元呀!
不过用g++确可以编译,奇怪!!
源码在这儿:
http://kuga.51.net/temp/cpp1.zip
解决方案 »
- 在SDI中同时有多个属性表单
- 谁能给我发个用MFC编写的收发邮件系统
- 托盘运行问题 ~~~?????
- 打开一幅bmp图片时,怎样调整多文档子窗口大小使其和图片大小相符?
- 关于串口编程,请大家多多帮忙
- 命令行参数的使用
- 又一疑惑:今天刚安装了vcsp5,竟然我的程序编译通过,但是无法运行,一运行就出现运行错误!!!估计是BCG搞得鬼,怎么办呢?!
- NTP
- 哪位大侠使用VC和数据库比较完美地做过管理系统?交流一下,要分您说话。
- 谁有MFC控件方面的全书?
- 在打开一数据库管理程序时,错误提示:无法对DAO/JET DB引擎进行初始化。怎么解决?
- 关于用VC对Excel编程,Excel2k找不到excel9.olb,只有XLSen32.olb但是Application中没有GetWorkBooks函数,咋办?
如:
friend bool operator < ( String &st, String &st2){
return (strcmp(st.str,st2.str)<0);
}
要全部做成内联吗?
要全部做成内联吗?
要是有的函数比较大怎么办?
VC中就这样的了,没办法
好象支持得不好
vc7可不可以?
我这样的测试程序又对
class String{
char *str;
public:
String(char *s){
str=(char *)malloc(sizeof(char)*strlen(s));
strcpy(str,s);
}
friend int operator < (const String &s1,const String &s2);
~String(){
if(str)
free(str);
}
};
int operator < (const String &s1,const String &s2){
return(strcmp(s1.str ,s2.str ));
}
问题解决了,vc6对 using namespace std 支持的不好。
把String类头文件里的
using namespace std
改成:
using std::istream;
using std::ostream;
怎样结束问题?我好把分给你呀!