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;
};
的書的練習15.41我調用它在表達Query q=Query(s1) & Query(s2) | Query(s3);
在C++底漆4
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'按鈕,它爲我們帶來了「隨機垃圾」和「可讀源代碼」之間的區別。它給人的印象是你*關心*回答你的問題。如果你甚至不能制定一個可讀的問題,爲什麼其他人應該被困擾回答它? – jalf 2010-11-07 14:13:33
當您編寫問題時,在編輯框下方有一個非常方便的預覽窗口。你可以立即看到你的格式是否好。 – 2010-11-07 14:15:01
請給出一個問題的描述,因爲不是每個人都有這本書。請格式化您的代碼,使其可讀 – segfault 2010-11-07 14:17:38