我正在尝试实现一个简单的复制构造函数:
template<typename T>
MyClass<T>::MyClass(const MyClass<T> &other) {
MyIterator<T> it = other.begin();
//...
};
成员函数体中的那一行会生成此错误:
无法将此指针从const Class转换为Class&amp;
我尝试使用const_cast,但它没有用完。
答案 0 :(得分:3)
您的begin
方法显然是非常量的,但您尝试在const对象上调用它。
答案 1 :(得分:0)
这是一件非常好的事情,你可以做到这一点!在极少数情况下,您需要使用const_cast
,因此一般情况下,这样做并不恰当。
other
是const
对象,因此begin()
应该返回一个const迭代器。而不是
MyIterator<T> it = other.begin();
使用
MyConstIterator<T> it = other.begin();
它应该工作(如果你定义了const迭代器)。