我遇到了完全未知的错误。我在互联网上搜索有关错误的信息,但是出来的东西不起作用,错误在以下代码行中:
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;
}
任何可以解决错误的想法?
答案 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)->
- 如果这是有意义的。您还可以为*
定义运算符。