1

私は完全に未知のエラーに遭遇しました。エラーについてインターネットで情報を検索しましたが、出てくるものは機能しません。エラーは次のコード行にあります。

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

私が受け取るエラーメッセージは次のとおりです。

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

ポインター *Listaは typeListaCircularであり、次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)->- それが理にかなっている場合。ちなみに、演算子 for を定義することもできます*

于 2013-03-09T19:09:11.537 に答える