错误C2664,需要澄清

时间:2013-04-27 12:37:58

标签: c++ c2664

我在我的程序中使用此函数,我在receive(&head);调用它。我做错了并得到错误c2664:无法转换参数1来自"链接**"到"链接*"致电QUEUEget(&head)时。如果我理解正确(*head)是指向其他链接的链接,那么我应该执行类似(&(&head))的操作,但它不起作用。

   void receive(link *head){
        int j;
        for (j=0;j<WINDOW;j++){
         if (((*head)->status==PENDING) || ((*head)->status==NEW)) {
             (*head)->status=ACK;
              printf("Packet No. %d: %d\n",(*head)->packetno,(*head)->status);
              QUEUEget(&head);
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

大概就是在这种情况下

QUEUEget(&head);

headlink*。您正在传递地址,该地址为您提供指向指针的指针,即link**。你可能需要

QUEUEget(head)

答案 1 :(得分:0)

  

错误c2664:无法将参数1从“link **”转换为“link *”   在调用QUEUEget(&amp; head)。

这告诉您QUEUEget函数期望link*(指向link的指针)作为其参数,但您传递的是link** (指向link的指针)。

receive函数中,参数head已经是link*

void receive(link *head);

但是,在此行中,您将head的地址(即指向link*的地址)传递给QUEUEget

QUEUEget(&head);

相反,只需直接传递head

QUEUEget(head);