1

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

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

我收到的错误消息是:

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

指针 *Lista是 type 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;
}

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

4

2 回答 2

1

IfLista是一个指针,ListaCircular例如:

 ListaCircular *Lista = ....

那么你if的陈述应该是这样的:

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

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

于 2013-03-09T19:06:53.283 回答
1

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

(*Lista).PrimerNode

等或

Lista->PrimerNodo

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

于 2013-03-09T19:09:11.537 回答