| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 798 人关注过本帖
标题:一个令我头疼的问题
只看楼主 加入收藏
huanguyu
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-4-26
收藏
 问题点数:0 回复次数:13 
一个令我头疼的问题

同一个程序在两台机器上面一个OK,另外一个却有错误,曾经问过,aogun说是有台没打补丁 但是我确定两台都没打过SP6,现在在家里电脑上面运行还是出错谁能帮我解决下,错误如下
error C2248: 'inside' : cannot access private member declared in class 'String'
error C2248: 'inside' : cannot access private member declared in class 'String'
error C2593: 'operator >>' is ambiguous
error C2593: 'operator <<' is ambiguous
error C2593: 'operator <<' is ambiguous

源代码在附件里
注意 这个在有的机器上运行是没错误的




mcKPaBF8.txt (3.28 KB) 一个令我头疼的问题


[此贴子已经被作者于2006-7-10 20:12:50编辑过]

搜索更多相关主题的帖子: 头疼 
2006-07-10 20:07
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

你把这两个重载的函数定义写到类里面去~!
friend istream& operator >>(istream& cin,String& o1)//输出输入流重载,注意格式
{
cin>>o1.inside;
return cin;
}
friend ostream& operator <<(ostream& cout,String& o2)
{
cout<<o2.inside;
return cout;
}


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-10 20:16
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
我看了下,你的find的算法有点问题,改一下:
int String::find(String & s2)//find的实现
{
for(int i=0;i<length();i++)
{
for(int j=i,k=0;k<s2.length()&&inside[j]==s2.inside[k];j++,k++) ;
if(k==s2.length()-1)
return i;
}
return -1;
}

[此贴子已经被作者于2006-7-10 20:33:11编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-10 20:32
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

具体原因我也不清楚,反正老是在重载流运算符的时候老是说:有歧义~!!!
所以建议,以后只要是重载这个函数,就把它写在类里吧(作为友元的时候)。


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-10 20:41
huanguyu
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-4-26
收藏
得分:0 
以下是引用wfpb在2006-7-10 20:32:15的发言:
我看了下,你的find的算法有点问题,改一下:
int String::find(String & s2)//find的实现
{
for(int i=0;i<length();i++)
{
for(int j=i,k=0;k<s2.length()&&inside[j]==s2.inside[k];j++,k++) ;
if(k==s2.length()-1)
return i;
}
return -1;
}

这里是不可以减去1的,减了以后就错了
因为最后一个相同的以后 还要进行K++刚好可以和S2的长度相等
我重新装了几次VC并且改了点路径以后已经解决了我的问题 呵呵 谢谢wfpd


看越多书就发现自己越无知 于是就越想知道更多
2006-07-10 21:42
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

你可以自己去想想,你那绝对有问题,最好做做实验


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-10 21:45
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
循环里的k<s2.length()和k==s2.length()你不觉得矛盾吗?
如果k==s2.length()则循环语句被判断不成立,又怎么进去执行里面判断块呢?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-10 22:16
huanguyu
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-4-26
收藏
得分:0 
呵呵 注意 k<s2.length()和k==s2.length()不在同一个循环

for(int j=i,k=0;k<s2.length()&&inside[j]==s2.inside[k];j++,k++) ;//这里已经结束了这个循环了

看越多书就发现自己越无知 于是就越想知道更多
2006-07-10 22:22
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

哦,没看见~!


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-10 22:26
huanguyu
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-4-26
收藏
得分:0 
呵呵~~~

看越多书就发现自己越无知 于是就越想知道更多
2006-07-10 22:27
快速回复:一个令我头疼的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017663 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved