struct error表达式必须具有bool类型

时间:2016-08-25 16:10:29

标签: c++ arrays function loops struct

今天我学习如何声明结构记录类型,在数组中应用结构化记录类型。所以基本上这就是我从使用struct开始编码的方式。

struct myStock 
    {
        string title;
        double price;
        int stock_lvl;
        bool award;
    };

myStock stock[4]; //store 4 record

void initialize()
{

stock[1].title = "Ilo Ilo";
stock[1].price =  35.55;
stock[1].stock_lvl = 15;
stock[1].award = 1;

stock[2].title = "Money Just Enough";
stock[2].price =  10.35;
stock[2].stock_lvl = 0;
stock[2].award = 0;

stock[3].title = "My Mother-in-Law";
stock[3].price =  22.50;
stock[3].stock_lvl = 5;
stock[3].award = 0;

stock[4].title = "Stars";
stock[4].price =  22.95;
stock[4].stock_lvl = 1;
stock[4].award = 1;
}

一切正常但是当我来到这个部分时,这个部分是数组将循环并检查stock_lvl的值并基于条件并执行的部分。但是我收到的错误是" struct error表达式必须有bool类型"。我在这里做错了吗?我不是要求回答,但也许有人可以向我解释一下?

int replenishStock()
{       
    for(int i=0; i<4; i++)
    {
    if(myStock[i].stock_lvl < 2)
    {
         myStock[i].award = true;             
         myStock[i].stock_lvl = +10;
    }
    else 
        myStock[i].stock_lvl = +5;
    }

2 个答案:

答案 0 :(得分:2)

对于初学者,N个元素数组的有效索引范围是[0,N-1]。所以这些陈述

stock[4].title = "Stars";
stock[4].price =  22.95;
stock[4].stock_lvl = 1;
stock[4].award = 1;

对4个元素的数组无效。

对于错误消息,似乎不是像这样的语句中的结构名称

if(myStock[i].stock_lvl < 2)
   ^^^^^^^

您必须使用数组名称

if(stock[i].stock_lvl < 2)
   ^^^^^^^

答案 1 :(得分:0)

你在这里犯了两件事:

  1. 您将数组定义为echo $_GET['id']; echo $_GET['username']; ,这意味着您需要myStock stock[4];stock[0]而不是stock[3]stock[1]。< / p>

  2. 此外,如果您将结构定义为stock[4],则应使用bool award;stock[x].award = true;代替stock[x].award = false;stock[x].award = 0; A bool类型想要true或false,尽管1或0不应该在任何编译器上给你一个错误。