我正在尝试将标准的多集/向量/列表包装在一个类中,如下所示。
class mymultiset : public datastructure
{
std::multiset<std::string> the_set;
std::multiset<std::string>::iterator head;
public:
class iterator :public datastructure::iterator
{
iterator(std::multiset<std::string>::iterator *)
}
std::unique_ptr<datastructure::iterator> begin(void) const;
}
std::unique_ptr<datastructure::iterator> multiset::begin(void) const
{
head = the_set.begin();
return std::make_unique<mymultiset::iterator>(&head);
}
错误: “没有运算符“ =”与这些操作数匹配-操作数类型为:const std :: _ Rb_tree_const_iterator = std :: __ Rb_tree_const_iterator“
违规行是。
head = the_set.begin();
我该如何解决?我以前曾尝试在multiset :: begin中使用std::multiset<std::string>::iterator head = the_set.begin();
进行编译,但是由于它作为参考返回,因此我认为它已删除。
已解决:函数不应该返回const。已删除以解决该问题。
答案 0 :(得分:0)
该函数为const,这意味着the_set也将为const。因此,multiset :: begin的const变体将返回const_iterator,而不是迭代器。
std::unique_ptr<datastructure::const_iterator> begin(void) const;