å°è¯•æå–ä¸æ˜¯ç»“构的值的组件。 C ++

时间:2014-02-25 12:24:05

标签: c++ debugging if-statement struct

离开this questionåŽé¢æˆ‘去了第一次调试(n00b)并收到错误:Attempt to extract a component of a value that is not a structure.
è¿™æ„味ç€ä»€ä¹ˆï¼Ÿå¯¹æˆ‘的代ç æœ‰ä»€ä¹ˆå½±å“?

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

我认为å¯èƒ½IDå’Œtargetitemquant被视为c字符串,但错误å‘生在targetitemå’Œtargetitemquant上。

3 个答案:

答案 0 :(得分:2)

花了HOURS ......这是一个éžå¸¸ç®€å•çš„逻辑错误。 :@

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

应该是

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

注æ„&gt;中的差异和&lt;。

答案 1 :(得分:0)

ç›®å‰è¿˜ä¸æ˜¯å¾ˆæ¸…楚你是å¦èƒ½å¤Ÿç¼–译代ç å¹¶åœ¨è°ƒè¯•å™¨ä¸­è°ƒè¯•å¯¼è‡´æ­¤é”™è¯¯ï¼Œæˆ–者调试是å¦æ„味ç€é¦–先编译?

如果这是调试时间问题,请å‘布调试器信æ¯ï¼Œå‡ºçŽ°æ­¤é”™è¯¯çš„上下文éžå¸¸æœ‰ç”¨ã€‚很å¯èƒ½ä½ æœ‰ç›¸åŒçš„命åå˜é‡ï¼Œå®ƒä¸æ˜¯æ­¤é”™è¯¯ä¸Šä¸‹æ–‡ä¸­çš„结构。

答案 2 :(得分:-1)

questinfo.targetitem == "coins"正在将结构æˆå‘˜ä¸Žå­—符串进行比较 - 这是ä¸å…许的...... 查看questinfo结构上的定义会很有帮助。