2014-02-25 35 views
-2

關閉this question後面我去做了我的第一次調試(n00b),並得到了錯誤:Attempt to extract a component of a value that is not a structure.
這是什麼意思,對我的代碼有什麼影響?嘗試提取不是結構的值的組件。 C++

if (questinfo.targetitem == "coins" && questinfo.targetitemquant >= coins) 
{ 
    cout << "You have enough coins to complete your task!" << endl; 
    questactive = false; 
} 

的結構定義,根據要求,如下:

struct questdata{ 
    int ID; 
    string targetitem; 
    int targetitemquant; 
    string questgiver; 
    string questdesc; 
}; 
questdata questinfo; 

和成員的值是從數組指派像這樣:

questinfo.ID = atoi(queststuff[0].c_str()); 
questinfo.targetitem = queststuff[1]; 
questinfo.targetitemquant = atoi(queststuff[2].c_str()); 
questinfo.questgiver = queststuff[3]; 
questinfo.questdesc = queststuff[4]; 

我認爲它可能是IDtargetitemquant被視爲c字符串,但在targetitemtargetitemquant上發生錯誤。

+2

我想這是*調試器*而不是給你這個消息的編譯器?如果是這樣,你在調試器中做了什麼來得到這個消息? –

+2

哪個調試器?你輸入到調試器的是什麼?在代碼中你有什麼觀點? – Salgar

+0

不知道這些變量什麼都不知道,我不可能告訴你。 –

回答

1

花了小時在這...這是一個非常簡單的邏輯錯誤。 :@

if (questinfo.targetitem == "coins" && questinfo.targetitemquant >= coins) 

應該已經

if (questinfo.targetitem == "coins" && questinfo.targetitemquant <= coins) 

音符>和<的差異。

-1

questinfo.targetitem == "coins"正在比較結構成員與字符串 - 這是不允許的... 這將有助於看到questinfo結構的定義。

+2

你的意思是不允許的?當然如此? – Salgar

+0

targeritem是字符串類型,你會發現,如果你通過他提供的鏈接...如果它的字符串比較是有效的然後。 – HadeS

+0

將定義添加到問題中 – user2483876

0

如果您能夠編譯代碼並在導致此錯誤的調​​試器中進行調試,或者通過調試,您的意思是首先編譯,這並不是很清楚嗎?

如果這是一個調試時間問題,發佈調試器信息,出現此錯誤的上下文很有用。很可能你有相同的命名變量,這不是在這個錯誤的上下文中的結構。