| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 894 人关注过本帖
标题:大家帮我解决一下C++问题
只看楼主 加入收藏
specilize
Rank: 4
等 级:业余侠客
帖 子:126
专家分:247
注 册:2011-2-20
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
大家帮我解决一下C++问题
我定义了一个名为TextQuery的类,在类的头文件中public部分我用了
typedef vector<string>::size_type line_no;
该类中有一个为const set<line_no>& run_query(const string&) const;的成员函数
但是,当我在实现文件中编写这个函数时,我用
const set<line_no>& run_query(const string&) const;
{、、、、、、}
提示错误
d:\c++\第十章\文本综合查询程序\文本综合查询程序\textquery.cpp(21) : error C2065: “line_no”: 未声明的标识符
d:\c++\第十章\文本综合查询程序\文本综合查询程序\textquery.cpp(22) : error C2556: “const std::set &TextQuery::run_query(const std::string &) const”: 重载函数与“const std::set<_Kty> &TextQuery::run_query(const std::string &) const”只是在返回类型上不同
        with
        [
            _Kty=TextQuery::line_no
        ]
        d:\c++\第十章\文本综合查询程序\文本综合查询程序\textquery.h(24) : 参见“TextQuery::run_query”的声明
d:\c++\第十章\文本综合查询程序\文本综合查询程序\textquery.cpp(22) : error C2371: “TextQuery::run_query”: 重定义;不同的基类型
        d:\c++\第十章\文本综合查询程序\文本综合查询程序\textquery.h(24) : 参见“TextQuery::run_query”的声明
d:\c++\第十章\文本综合查询程序\文本综合查询程序\textquery.cpp(37) : error C2264: “TextQuery::run_query”: 函数定义或声明中有错误;未调用函数
生成日志保存在“file://d:\C++\第十章\文本综合查询程序\文本综合查询程序\Debug\BuildLog.htm”
文本综合查询程序 - 4 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
但是如果我改为
const set<TextQuery:line_no>& run_query(const string&) const;
却可以通过,请高手帮我解释一下
搜索更多相关主题的帖子: 标识 
2011-04-12 13:11
specilize
Rank: 4
等 级:业余侠客
帖 子:126
专家分:247
注 册:2011-2-20
收藏
得分:0 
另外一个问题,和上面同属一道的
void TextQuery::print_result(const string &find_word) const
{
    set<line_no> set=run_query(find_word);
    set<line_no>::iterator  iter=set.begin();
    if(set.size()==0)
        cout<<"Cant not find<<find_word<< "<<endl;
    else
        if(set.size()==1)
            cout<<find_word<<"occurs one time"<<endl;
        else
            cout<<find_word<<"occurs "<<set.size()<<"times"<<endl;
    while(iter!=set.end())
        cout<<"(line "<<(*iter)+1<<") :"<<text_line(*(iter++))<<endl;
}
这段代码会提示错误,但是如果我把set<line_no>::iterator  iter=set.begin();改为
std::set<line_no>::iterator  iter=set.begin();就不会,为什么,说明一下,我在头文件中是有使用std命名空间的

2011-04-12 13:41
wangjunit
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2011-4-12
收藏
得分:2 
估计是作用域问题
2011-04-12 17:11
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:2 
这个还真没有了解过
2011-04-13 07:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:2 
没代码,没真相
2011-04-13 08:04
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:2 
typedef vector<string>::size_type line_no;改为
typedef std::vector<string>::size_type line_no;
或者在开头的文件中用 using spacename std;来声明作用域。
2011-04-13 22:01
快速回复:大家帮我解决一下C++问题
数据加载中...
 
   



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

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