C++ 尝试提取非结构值的组件。c++;

C++ 尝试提取非结构值的组件。c++;,c++,debugging,if-statement,struct,C++,Debugging,If Statement,Struct,从后面开始,我进行了我的第一次调试(n00b),得到了错误:尝试提取非结构值的组件。 这意味着什么?对我的代码有什么影响 if (questinfo.targetitem == "coins" && questinfo.targetitemquant >= coins) { cout << "You have enough coins to complete your task!" << endl; questactive = fal

从后面开始,我进行了我的第一次调试(n00b),得到了错误:
尝试提取非结构值的组件。

这意味着什么?对我的代码有什么影响

if (questinfo.targetitem == "coins" && questinfo.targetitemquant >= coins)
{
    cout << "You have enough coins to complete your task!" << endl;
    questactive = false;
}
成员的值是从数组中指定的,如下所示:

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
questinfo.targetitem==“coins”
将结构成员与字符串进行比较,这是不允许的。。。
查看
questinfo
结构上的定义会很有帮助。

不太清楚您是否能够编译代码并在导致此错误的调试器中进行调试,或者您所说的调试是指首次编译


如果这是调试时间问题,则发布调试器信息以及出现此错误的上下文非常有用。很可能您的命名变量与此错误上下文中的结构不同。

在这个问题上花了几个小时。。。这是一个非常简单的逻辑错误@

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

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

if(questinfo.targetitem==“硬币”&&questinfo.targetitemquant,我猜是调试器而不是编译器给了你这个消息?如果是,你在调试器中做了什么来获得这个消息?哪个调试器?你在调试器中键入了什么?你在代码中的目的是什么?在对这些变量一无所知的情况下,我不可能告诉你.targeritem是字符串类型,如果你浏览他提供的链接,你会发现…如果它的字符串比较有效,那么。在问题中添加了定义添加到问题中:)为什么我被否决了?我试图根据不完整的信息(在添加结构之前)回答这个问题,这似乎不公平。引用:“我以为可能是ID和targetitemquant被视为c字符串”为什么会是这种情况?您已将两者声明为INT。由于我们仍然不知道was类型“coins”是什么,我将在黑暗中试探一下,并假设它是一个字符串,一个作为结构的变量-在这种情况下,您尝试将一个整数与一个更复杂的类型进行比较,这就是为什么您会得到错误消息的原因。附言哪一条是错误线?
if (questinfo.targetitem == "coins" && questinfo.targetitemquant <= coins)