如何在类函数中分配迭代器

时间:2019-05-13 00:37:31

标签: c++

我正在尝试将标准的多集/向量/列表包装在一个类中,如下所示。

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。已删除以解决该问题。

1 个答案:

答案 0 :(得分:0)

该函数为const,这意味着the_set也将为const。因此,multiset :: begin的const变体将返回const_iterator,而不是迭代器。

std::unique_ptr<datastructure::const_iterator> begin(void) const;