2016-08-25 5 views
0

heute lerne ich wie deklaration von struct record type, anwendung des strukturierten auflistentyps in einem array. Also im Grunde ist das, wie ich mit der Codierung mit Struct beginnen.struct error expression muss bool typ haben

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

Alles funktioniert gut, aber wenn ich zu diesem Teil kam, dieser Teil ist, wo das Array in einer Schleife und den Wert für stock_lvl und Basis auf dem Zustand überprüfen und ausführen. Aber der Fehler, den ich erhalte, war "struct error expression muss bool type haben". Mache ich hier etwas falsch? Ich bitte nicht um Antwort, aber vielleicht könnte mir jemand erklären?

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; 
    } 
+1

[FYI] Stock [4] ist nicht in Ordnung. Es ist undefiniertes Verhalten und eine tickende Zeitbombe. – NathanOliver

+0

Warum initialisierst du 'award' mit den Werten' 1' und '0', aber verwende in deiner Schleife' true'? –

+0

Das und 'stock [0]' enthält nicht initialisierte Daten. Du musst wirklich ein Buch lesen. Das ist sehr, sehr sehr einfach. – IInspectable

Antwort

2

Für Starter der gültige Bereich der Indizes für ein Array von N Elementen ist [0, N-1]. Diese Anweisungen

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

sind für das Array von 4 Elementen ungültig.

Was die Fehlermeldung dann scheint es, dass anstelle des Strukturnamen in Aussagen wie diese

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

Sie haben

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

Ohhh, Array-Element Bereich von 0, weil N-1. Array scheint ziemlich kompliziert. – user3804846

0

Sie machen zwei Dinge, die den Array-Namen falsch verwenden hier:

  1. definieren Sie das Array als myStock stock[4];, was bedeutet, Sie müssen t o tun stock[0] durch stock[3] anstelle von stock[1] durch stock[4].

  2. Auch, wenn Sie Ihre Struktur definieren bool award; haben, dann sollten Sie stock[x].award = true; und stock[x].award = false; anstelle von stock[x].award = 0; und stock[x].award = 1; A Bool Typ will wahr oder falsch, wenn 1 oder 0 sollten Sie keinen Fehler geben auf alle Compiler .

+0

# 2 ist kein Problem. 0 ist falsch und alles andere ist wahr. – NathanOliver

+0

Ich sehe, wie der Boolean funktioniert. Alles, was ich für boolesch hielt, war entweder 0 oder 1 und sollte in 1 oder 0 deklarieren. Jetzt verstehe ich Ihren Standpunkt. – user3804846

Verwandte Themen