【问题标题】:No match for 'operator==''operator==' 不匹配
【发布时间】:2013-03-09 19:03:36
【问题描述】:

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

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

有什么办法可以解决这个错误吗?

【问题讨论】:

    标签: c++ pointers operator-keyword


    【解决方案1】:

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

     ListaCircular *Lista = ....
    

    那么你if的声明应该是这样的:

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

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

    【讨论】:

      【解决方案2】:

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

      (*Lista).PrimerNode
      

      等等。或

      Lista->PrimerNodo
      

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

      【讨论】:

        猜你喜欢
        • 2020-02-06
        • 1970-01-01
        • 2015-09-09
        • 1970-01-01
        • 2019-04-09
        • 2011-10-06
        • 2021-05-21
        相关资源
        最近更新 更多