So bin ich nur versucht, ein Array von Objekten meiner benutzerdefinierten Klasse zu machen bcLED und ich bin mit dem Fehler. Fehler: keine Übereinstimmung für 'operator =' (Operandentypen sind 'bcLed' und 'bcLed *')C++ also warum Fehler: keine Übereinstimmung für ‚operator =‘
Kann mir jemand sagen warum? Ich weiß, es wird etwas Einfaches sein.
auch, warum ich hier bin gibt es eine Möglichkeit, ein Array einer nicht spezifizierten Länge in C++ zu erstellen und dann fügen Sie es einfach mit einer neuen Zeile jedes Mal, wenn ich ein Objekt hinzufügen möchten?
void PopulateLEDS(){
int i;
bcLed ledArr[17];
for (i = 0; i< 16; i++)
{
ledArr[i] = new bcLed();
ledArr[i].id = i;
ledArr[i].charge = 0;
}
}
OK so brauche ich mehr Hilfe
Um die Schaffung zehntausend Beiträge vermieden werde ich den Hauptteil des Codes, so dass einzufügen, um zu sehen, wo ich mit der C++ Syntax bin Stolpern.
die lattest Fehler sind
/Users/bencawley/Documents/Arduino/Test/Bens_Lights/Bens_Lights.ino: In function 'void PopulateLEDS()':
Bens_Lights:49: error: expected primary-expression before 'public'
public:bcLed ledArr[17];
^
Bens_Lights:52: error: 'ledArr' was not declared in this scope
ledArr[i].id = i;
^
/Users/bencawley/Documents/Arduino/Test/Bens_Lights/Bens_Lights.ino: In function 'void BensPattern(uint8_t)':
Bens_Lights:69: error: 'ledArr' was not declared in this scope
strip.setPixelColor(i,0, 0, ledArr[i].charge, 0);
^
Using library Adafruit_NeoPixel at version 1.0.6 in folder: /Users/bencawley/Documents/Arduino/libraries/Adafruit_NeoPixel
exit status 1
expected primary-expression before 'public'
Und mein Code:
class bcLed{
public:int id;
public:int charge;
void incCharge(int amt)
{
charge = charge+amt;
if(charge >= 255){charge = 255;}
}
};
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
PopulateLEDS();
}
void loop() {
// Some example procedures showing how to display to the pixels:
BensPattern(45);
}
void PopulateLEDS(){
int i;
bcLed ledArr[17];
for (i = 0; i< 17; i++)
{
ledArr[i].id = i;
ledArr[i].charge = 0;
}
}
void BensPattern(uint8_t wait)
{
uint16_t i, j;
int rn = rand() % strip.numPixels() ;
for (i = 0; i<strip.numPixels(); i++)
{
strip.setPixelColor(i,0, 0, 0, 0);
}
for (i = 0; i<rn; i++)
{
strip.setPixelColor(i,0, 0, ledArr[i].charge, 0);
ledArr[i].incCharge(1);
}
strip.show();
delay(wait);
}
Kommen Sie zufällig aus einem Java-Hintergrund? – StoryTeller
Sie haben ein Array von 17 'bcLed'. Sie versuchen, ein 'bcLed *' zuzuweisen. Wenn Sie nicht eine 'operator =' overload für 'bcLed' definiert haben, die eine rechte Seite von' bcLed * 'nimmt, wird das nicht funktionieren (und Sie wollen es wahrscheinlich sowieso nicht). Sie brauchen diese Zuweisungsanweisung * überhaupt nicht. Sie haben bereits 17 'bcLed' Objekte. – WhozCraig
'ledArr [i]' ist 'bcLed'. 'new bcLed()' gibt 'bcLed *' zurück – zvone