不符合'operator =='

时间:2013-03-09 19:03:37

标签: c++ pointers operator-keyword

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

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;
}

任何可以解决错误的想法?

2 个答案:

答案 0 :(得分:1)

如果Lista是指向ListaCircular的指针,例如:

 ListaCircular *Lista = ....

然后你if声明应该是这样的:

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

错误消息基本上告诉您,当您使用Lista取消引用*时,您返回的类型不是指针。

答案 1 :(得分:1)

看起来你应该使用(提供Lista指向列表的指针)

(*Lista).PrimerNode

等。或

Lista->PrimerNodo

错误消息本身表明,结构中没有定义operator ->。如果已定义,您还可以使用(*Lista)-> - 如果这是有意义的。您还可以为*定义运算符。