const: problem bei iteratoren als parameter
-
Hallo,
Ich habe folgendes problem.
Ich habe folgende datanstructur (vereinfacht):
class connection_set{ private: struct connection_node{ connection_node(const unsigned long id,const node_type_t t):id_(id),type_(t){} unsigned long node_id_; node_type_t type_; std::set<connection_node> descending_nodes_; }; public: typedef std::set<connection_node>::iterator set_iter; set_iter add(const unsigned long id,const node_type_t t); set_iter add(const unsigned long id,const node_type_t t,set_iter element); //..... };
Es geht jetzt um die implementierung des zweiten add.
Ich möchte ein element in das set auf das der iterator zeigt einfügen.connection_set::set_iter connection_set::add(const unsigned long id, const node_type_t t,connection_set::set_iter element){ //... einige tests std::pair<std::set<connection_node>::iterator,bool> result_; result_=element->descending_nodes_->insert(connection_node(id,t)); //<-- funktioniert nicht wegen constness von descending_nodes_ ???? }
Der compiler meckert das descending_nodes_ constant ist. Obwohl es das doch eigentlich nicht sein sollte.
Als wie schaff ich es dass das funktioniert ? Ich hab ne dreckige Lösung aber es muss doch auch anders gehen.(dreckige lösung)
//--- snip std::set<connection_node> *nodeptr=const_cast< std::set<connection_node>* >(&element->descending_nodes_); nodeptr->insert(connection_node(id,t)); //--- snap
Ich versteh nicht warum descending_nodes_ constant ist.