C++ 入门书第 4 卷中的练习 15.41 [关闭]

Posted

技术标签:

【中文标题】C++ 入门书第 4 卷中的练习 15.41 [关闭]【英文标题】:The exercise 15.41 in book of c++ primer 4th [closed] 【发布时间】:2010-11-07 14:10:24 【问题描述】:
class Query
    friend Query operator&(const Query&,const Query&);
    friend Query operator|(const Query&,const Query&);
    friend Query operator~(const Query&);
public:
    Query(const string&);           //build a new WordQuery ??
    Query(const Query&c):p(c.p),use(c.use)++*use;
    ~Query()delQuery();
    Query operator=(const Query&c);
    set<TextQuery::line_no> eval(const TextQuery&c) constreturn p->eval(c);
    ostream& display(ostream&s) const return p->display(s);
private:
    Query(QueryBase *query):p(query),use(new size_t(1))
    QueryBase *p;
    size_t* use;
    void delQuery()
        if(--*use==0)
            delete p;
            delete use;
    
;

class WordQuery:public QueryBase
    friend class Query;
    WordQuery(const string& s):QueryWord(s)  //Query use the WordQuery constructor
    set<lineno> eval(const TextQuery&t) const
    return t.run_query(QueryWord);
    ostream& display(ostream& os) const
    return os<<QueryWord;
    string QueryWord;
;

我在表达式 Query q=Query(s1) &amp; Query(s2) | Query(s3); 中调用它

ERRORS:"TextQueryADVANCE.cpp:(.text+0x15ba): undefined reference to `Query::Query(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
"

【问题讨论】:

提问时,请 1) 记得输入实际的问题,而不仅仅是源代码列表和错误消息,以及 2) 格式化您的代码 以便我们阅读。选择文本并不难,点击101010按钮,它对我们来说是“随机垃圾”和“可读源代码”之间的区别。它还给人的印象是您关心您的问题得到回答。如果你连一个可读的问题都懒得提,那为什么还要费心去回答呢? 写题时编辑框下方有一个非常方便的预览窗口。您可以立即查看您的格式是否良好。 请描述问题,因为不是每个人都有那本书。请格式化您的代码,使其可读 对不起,我是新手,我的英语不好 这里不是英语不好的情况,而是代码格式不好以及缺乏英语让我们首先阅读的情况。 【参考方案1】:

您似乎为构造函数放置了原型,但实际上并没有放置实现。

你输入:Query(const string&amp;);,它表示某处有一个构造函数,它接受一个字符串并用它创建一个查询。但是,您实际上必须在某个地方放置一些可以做到这一点的东西。

【讨论】:

【参考方案2】:

这是一个链接器错误。看来您还没有提供Query(const string&amp;) 的实现。

【讨论】:

如果你读过这本书,你就会知道这不是原因 @liu:如果您知道什么不是原因,请将其写在您的问题中。不要指望我们会准备好一些书籍并查找内容,只是为了回答您的问题。 @liu 如果你读过这本书你就会知道问题出在哪里。

以上是关于C++ 入门书第 4 卷中的练习 15.41 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从0带你入门C++,本文3万字含C++全套基础语法和练习套题,肝!

循环控制强化训练

C++从入门到入土第九篇:string相关OJ练习

C++入门小程序练习

C++ 入门学习(练习+代码)—— 02

2-4:C++快速入门之函数重载