【发布时间】: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) const{return 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) & 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按钮,它对我们来说是“随机垃圾”和“可读源代码”之间的区别。它还给人的印象是您关心您的问题得到回答。如果你连一个可读的问题都懒得提,那为什么还要费心去回答呢? -
写题时编辑框下方有一个非常方便的预览窗口。您可以立即查看您的格式是否良好。
-
请描述问题,因为不是每个人都有那本书。请格式化您的代码,使其可读
-
对不起,我是新手,我的英语不好
-
这里不是英语不好的情况,而是代码格式不好以及缺乏英语让我们首先阅读的情况。
标签: c++ class constructor