2016-05-04 16 views
-1

Ich habe folgendes:Expression muss ein modifizierbar lvalue sein (wenn an ein Array zu anhängen versuchen)

uint16_t Hitcount[64]; //64-byte array buffer 
uint16_t Br; 
int StdWidth = 38; 
int widthpad = 8; 
int W; 
uint16_t blocks; 


if (W <= (StdWidth + widthpad) && W >= (StdWidth - widthpad) && blocks == 1) { 
     Hitcount += Br; 
    } 

Mein Ziel ist es „Br“ auf dem Feld „HitCount“, wenn „W“ appenf ist innerhalb ein bestimmter Bereich. "Hitcount" gibt jedoch den Fehler "Expression muss ein modifizierbarer Lvalue sein". Habe ich meine Datentypen und alles in Ordnung?

Entschuldigung, wenn dies zu anderen Fragen, die gepostet wurden, zu nah ist. Ich schaute sie an, konnte sie aber mit meinem begrenzten Wissen nicht auf dieses Szenario beziehen.

+2

Was erwarten Sie 'Hitcount + = Br;' zu tun? – NathanOliver

+1

Zunächst sind Ihre Kommentare irreführend. Es ist ein 128-Byte-Array-Puffer. Zweitens, wenn Sie etwas an das Array anhängen möchten, müssen Sie den Wert eines bestimmten Elements davon ändern, nicht das Array-Objekt selbst inkrementieren - es ist sinnlose Operation. – SergeyA

+0

Zum Anhängen von Br an das Array Hitcount, wie hier beschrieben: https://www.arduino.cc/en/Tutorial/StringAppendOperator – LegitimateWorkUser

Antwort

5
Hitcount += Br; 

Sie können einem C-Stil-Array keinen Wert hinzufügen. Sie müssen entweder Elemente halten zählen und einen Wert wie folgt hinzu:

Hitcount[count++] = Br; 

oder Sie besser verwenden std::vector und Element hinzufügen, indem Aufruf push_back:

std::vector<uint16_t> Hitcount; 
// code skipped 
Hitcount.push_back(Br); 
+0

Thaanks, ich habe nicht realisiert + = war nur für String-Arrays. Es wäre einfach, die Elemente zu verfolgen und an ihre Zählnummern anzuhängen. Ich werde das machen. – LegitimateWorkUser

+0

@LegitimeWorkUser C-String Array ist 'char str [Größe]' und würde genau das gleiche Problem haben. Was Sie erwähnen, ist C++ - Objekt 'std :: string', das kein String-Array ist, sondern ein Objekt, also ist' std :: vector' ebenfalls ein Objekt und hat die Funktionalität, Elemente dynamisch hinzuzufügen usw. – Slava

+0

Danke, Slava. Ich benutze jetzt std :: und es funktioniert bereits. – LegitimateWorkUser

1

Plain C/C++ Arrays können nicht die Art und Weise erweitert werden string Objekte können. Unter Verwendung von std::vector untersuchen.

+0

Ja, das funktioniert jetzt für mich. Ich weiß es zu schätzen. – LegitimateWorkUser