[Fwd: How to print the structure of vector of boost::variant]
Dear friends, please see the bellow my code and tell me how to get out this problem please.when I try to print values of variant it's giving the error as: std::ostream& operator<<(std::ostream&, const status_rsp&): worked.cpp:33: error: const struct status_rsp has no member named os worked.cpp:33: error: const class boost::variant<int, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> has no member named channelid worked.cpp:33: error: expected ) before ; token worked.cpp:34: error: const class boost::variant<int, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost #include<vector> #include<iostream> #include<boost/variant.hpp> typedef int cid; typedef int n_queue; typedef boost::variant<chid> link_st_rs; typedef std::vector<link_st_rs> link_st_rs_list; typedef boost::variant<n_queue> link_de_rs; typedef std::vector<link_de_rs> link_de_rs_list; using namespace std; struct lparam { int value; }; typedef vector<lparam> link1; struct link_s_rsp { link1 ll; link_st_rs_list lsrl; link_de_rs_list ldrl; }; struct status_rsp { link_s_rsp rsp; friend std::ostream& operator<<(std::ostream& os , const status_rsp& sr) { os << "the value is " << sr.rsp.ll.front().value; os << "id" << sr.rsp.lsrl.front().chid; os << "val" << sr.rsp.ldrl.front().n_queue; return os; } }; typedef vector<status_rsp> srl; int main() { linkparam lp; lp.value =90; link_de_rs_list ldrl; lsrl.push_back(4); ldrl.push_back(3); status_rsp sr; sr.rsp.ll.push_back(lp); srl srl1; srl1.push_back(sr); link1::iterator iter2 = srl1.begin()->rsp.ll.begin(); cout << "A vlue is: " << iter2->value; link_st_rs_list::iterator iter3 = srl1.begin()->rsp.lsrl.begin(); cout << " B value " << iter3->chid; link_de_rs_list::iterator iter4 = srl1.begin()->rsp.ldrl.begin(); cout << "C value" < iter4->n_queue; cin.ignore(); return 0; } Best Regards BaBu -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
please see the bellow my code and tell me how to get out this problem please.when I try to print values of variant it's giving the error as:
First of all, your code doesn't seem to be self-contained, it doesn't compile with no regards to operator <<. But anyway, check that you define operator<< for all the variant elements.
participants (2)
-
Baba Prasad
-
Igor R