19.override operator <<
struct topic_descript
{
btstring topic_url; //RuleEngine/LineDetector/Crossed
btstring name_space;
btvector<field_item> source_items;
btvector<field_item> key_items;
btvector<field_item> data_items;
friend std::ostream& operator <<(std::ostream& ou,topic_descript& obj){
ou<<"topic_url: "<<obj.topic_url<<"\n";
ou<<"name_space: "<<obj.name_space<<"\n";
btvector<field_item>::iterator it;
for(it=obj.source_items.begin(); it!=obj.source_items.end(); ++it){
ou<<*it<<"\n";
}
for(it=obj.key_items.begin(); it!=obj.key_items.end(); ++it){
ou<<*it<<"\n";
}
for(it=obj.data_items.begin(); it!=obj.data_items.end(); ++it){
ou<<*it<<"\n";
}
return ou;
}
};
注意: 找不到ostream 是由于
1.没包含 #include <iostream> 2.或者命名空间 std的 缘故。
C++ 就是比 C麻烦的多, 不会有 namespace, 找到就是找到, 找不到就是 undefined!
3. the order:
friend std::ostream& operator <<(std::ostream& ou,topic_descript& obj)
not like this
friend std::ostream& operator <<(topic_descript& obj,std::ostream& ou),
like that errors happened!