2015-03-18 43 views
-2

所以我基本上是一個堆棧,它以一個元素(10000)爲例,然後優先級來稍後對它進行排序。所以「10000 5」,5是優先和10000的元素。我一直插入值直到彈出被調用,這將採用堆棧頂部的最高優先級元素。出於某種原因,我得到了錯誤:「請求會員'優先'在某些不是結構或聯盟。」從研究這個錯誤來看,它似乎是我參考的某種問題?但我不知道在哪裏。如何在C中正確引用?我似乎錯過了點

+0

你想要'refA-> priority'或'(* refA).priority'。而'stack [i] - > element =&element;'(下面)也不會編譯。 – Inspired 2015-03-18 21:15:18

+0

使用' - >'通過一個指針訪問成員,就像用'printf(「%d \ n」,refA-> element);''做了一行。 – 2015-03-18 21:15:54

+0

謝謝你們,踢我自己的錯誤。 – 2015-03-18 21:25:43

回答

1

refArefB是指向結構體的指針,而不是結構體,因此您必須使用->來引用字段,而不是.。像這樣:

if(refA->priority != refB->priority){ 
    return refB->priority - refA->priority; 
} else { 
    return refB->followNr - refA->followNr; 
} 

當然你知道這一點,因爲在你的函數之前,你正確使用了->

+0

當然了,對不起,我的一個愚蠢的錯誤。當我在這裏時,我可能會再次踢自己。我也得到這些警告阻止我編譯:「警告:賦值使指針中的整數沒有轉換」並指向以下行,例如:「stack [i] - > element =&element;」 – 2015-03-18 21:24:53

相關問題