指针转换错误C
pointer conversion error c++
我写了一个简单的 list
类,其中的一部分看起来像:当我尝试构建该项目时,编译器显示了其中一个错误的3个错误,我无法理解为什么:
编译器错误说:
- 'myList :: node *mylist :: begin(void)':无法将" const mylist"转换为" myList"&'
- 'mylist :: node *mylist :: end(void)':无法将" const mylist"转换为" myList"&'
- 'myList :: create':没有超载函数为1个参数
类(只有很少的部分..)
template<class T>
class MyList
{
public:
typedef T* iterator;
typedef const T* const_iterator;
typedef T value_type;
typedef T& reference;
typedef const T& const_reference;
struct Node
{
T data;
Node* prev;
Node* next;
};
typedef Node* node_iterator;
node_iterator begin() { return first; }
node_iterator end() { return last; }
...
MyList() { create(); }//default constructor
MyList(size_type n, const T& val = T()){create(n, val);}
MyList(const MyList& l) { create(l.begin(), l.end()); }//copy constructor
MyList& operator=(const MyList&);//assignment operator
~MyList() { uncreate(); }
private:
node_iterator first;
node_iterator last;
...
...
};
MyList<T> & MyList<T>::operator=(const MyList& rhs)
{
if (&rhs != this)
{
uncreate();
create(rhs.begin(), rhs.end());
}
return *this;
}
template<class T>
void MyList<T>::create(node_iterator a, node_iterator b)
{
...
}
您正在调用
create(rhs.begin(), rhs.end());
其中 rhs
是const对象。但是您调用需要对象不为const的begin
和end
。要么更改
MyList<T> & MyList<T>::operator=(const MyList& rhs)
to
MyList<T> & MyList<T>::operator=(MyList& rhs)
或使begin
和end
适用于const对象。即node_iterator begin() const { return first; }
修复此操作,然后在任何其他编译器错误/警告上使用。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- C++使用params创建线程函数会导致转换错误
- 在混合代码库中将C转换为C++时出现许多包含错误
- 为什么g++在未执行的代码处标记强制转换错误
- 错误:从"int"到枚举c++的转换无效
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 从标准::未来<void>到非标量标准::未来<bool>引发的错误转换
- 使用宏的错误转换
- 在 opencv 中使用 Color_YUV2BGR 从 YUV 到 BGR 的错误转换
- 无法通过此操作,因为类型的错误转换
- PyQt5:使用自定义信号时 int 对象的错误转换
- 从长途错误转换
- C 错误:转换为非量表类型
- C 错误:转换为执行字符集
- 使用SOCI从PostgreSQL数据库获取数据时发生错误转换
- 分段错误C++转换问题
- 在ARM上的Qt中从双精度到QString的错误转换
- C++浮点转换为Python浮点错误转换
- 错误:转换为非标量类型