无法将此指针从const Class <t>转换为Class <t>&amp; </t> </t>

时间:2014-06-24 16:39:28

标签: c++ reference const copy-constructor

我正在尝试实现一个简单的复制构造函数:

template<typename T>
MyClass<T>::MyClass(const MyClass<T> &other) {
  MyIterator<T> it = other.begin();
  //...
};

成员函数体中的那一行会生成此错误:

  

无法将此指针从const Class转换为Class&amp;

我尝试使用const_cast,但它没有用完。

2 个答案:

答案 0 :(得分:3)

您的begin方法显然是非常量的,但您尝试在const对象上调用它。

答案 1 :(得分:0)

这是一件非常好的事情,你可以做到这一点!在极少数情况下,您需要使用const_cast,因此一般情况下,这样做并不恰当。

otherconst对象,因此begin()应该返回一个const迭代器。而不是

MyIterator<T> it = other.begin();

使用

MyConstIterator<T> it = other.begin();

它应该工作(如果你定义了const迭代器)。