无法与'operator=='匹敌
No match for 'operator=='
我遇到了完全未知的错误。我在互联网上搜索了有关错误的信息,但是出来的东西不起作用,错误在以下代码行:
if(opcion==1 && ((*Lista)->PrimerNodo->siguiente)==((*Lista)->UltimoNodo))
,我收到的错误信息是:
error: base operand of `->` has non-pointer type `ListaCircular`
指针 *Lista
为ListaCircular
类型,ListaCircular
为如下结构:
struct ListaCircular{
Nodo *PrimerNodo,*UltimoNodo;
ListaCircular(){
PrimerNodo->anterior=UltimoNodo;
PrimerNodo->siguiente=UltimoNodo;
UltimoNodo->anterior=PrimerNodo;
UltimoNodo->siguiente=PrimerNodo;
}
*PrimerNodo
和*UltimoNodo
为类型节点,其结构如下:
struct Nodo{
long Cedula,Telefono;
Nodo *siguiente,*anterior;
char* Nombre,Apellido,Correo;
Nodo()
{
siguiente=anterior=NULL;
}
有什么办法可以解决这个错误吗?
如果Lista
是指向ListaCircular
的指针,例如:
ListaCircular *Lista = ....
那么你的if
语句应该像这样:
if(opcion==1 && (Lista->PrimerNodo->siguiente)==(Lista->UltimoNodo))
错误信息基本上是告诉你,当你使用*
解引用Lista
时,你得到的类型不是指针。
看起来你应该使用(如果Lista是指向列表的指针)
(*Lista).PrimerNode
等。或者
Lista->PrimerNodo
错误消息本身表明,在您的结构中没有定义operator ->
。如果定义了它,也可以使用(*Lista)->
——如果这样有意义的话。您还可以通过以下方式为*
定义操作符
相关文章:
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 'operator='已弃用:改用 QDir::setPath()
- 过载'operator new'如何导致无限循环?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 处理"no operator found"
- 如何编写 operator= 用于使用虚拟方法与非平凡成员的匿名联合
- 运算符重载:"operator+"必须采用零个或一个参数
- 使用 operator() 扩展 Eigen::EigenBase
- 错误消息:使用"string* +="后"no match for 'operator+='"
- 有没有办法修改'operator->',以便'z->im'返回复数的虚部
- "operator +="行为异常的定义
- C++ "error: use of overloaded operator '*' is ambiguous"似乎只有一场比赛
- 无法与'operator !='匹敌
- 无法与'operator='匹敌
- C++'operator='无法匹敌
- 在'* __result = * __first'中无法与'operator='匹敌
- QVector 无法与'operator='匹敌
- STL C++:无法与'operator*'匹敌
- 无法与'operator=='匹敌