无法与'operator=='匹敌

No match for 'operator=='

本文关键字:匹敌 operator      更新时间:2023-10-16

我遇到了完全未知的错误。我在互联网上搜索了有关错误的信息,但是出来的东西不起作用,错误在以下代码行:

if(opcion==1 && ((*Lista)->PrimerNodo->siguiente)==((*Lista)->UltimoNodo))

,我收到的错误信息是:

error: base operand of `->` has non-pointer type `ListaCircular`

指针 *ListaListaCircular类型,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)->——如果这样有意义的话。您还可以通过以下方式为*定义操作符