尝试提取不是结构的值的组件.C++

Attempt to extract a component of a value that is not a structure. c++

本文关键字:组件 C++ 结构 提取      更新时间:2023-10-16

在这个问题的后面,我做了我的第一个调试(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];

我认为可能是IDtargetitemquant被视为 c 字符串,但错误发生在 targetitemtargetitemquant 上。

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

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

应该是

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

请注意>和<的差异。>

目前还不清楚您是否能够编译代码并在导致此错误的调试器中进行调试,或者您的意思是首先编译调试?

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

>questinfo.targetitem == "coins"正在将结构成员与字符串进行比较 - 这是不允许的......查看关于questinfo结构的定义会有所帮助。