Ich mache shenanigans mit Zeigern für ein Arduino-Hobby-Projekt, und ich habe eine Situation, die ich nicht lösen kann.Initialisieren anonymen Array von Zeigern
Grundsätzlich habe ich eine globale (weil Arduino) Array von Zeigern zu Thing
. Ich möchte es nicht während der Deklaration initialisieren, aber ich möchte die nette Array-Initialisierungssyntax nutzen.
Bitte beachten Sie, dass dies ein Arduino-Projekt ist und so eine ungewöhnliche Mischung aus C und C++ verwendet, weil Arduino. Von einigen Grundlagenforschung, sieht es so aus, wenn es in C oder C++ ohne Bibliotheken funktioniert, wird es dafür funktionieren.
Hinweis: Ich verwende NULL als eine Möglichkeit, das Ende des Arrays zu erkennen, während ich es an anderer Stelle im Code überstreiche.
So etwas so:
struct Thing {
int i;
};
Thing * MakeThing() {
return new Thing;
}
Thing * things[] = {
NULL
};
void setup() {
things = (Thing*[]){
MakeThing(),
NULL
};
}
Allerdings wird dies mir eine error: incompatible types in assignment of 'Thing* [2]' to 'Thing* [1]'
Ich habe versucht:
Thing* _things[] {
MakeThing(),
NULL
};
things = _things;
gleichen Fehler.
Ich habe versucht:
things = new Thing*[] {
MakeThing(),
NULL
};
gleichen Fehler.
Ich habe versucht:
things = new Thing** {
MakeThing(),
NULL
};
, die ich versuchte, ein error: cannot convert '<brace-enclosed initializer list>' to 'Thing**' in initialization
bekommt:
things = new Thing*[] {
MakeThing(),
NULL
};
die error: incompatible types in assignment of 'Thing**' to 'Thing* [1]'
Was ist los wird, dass dies nicht funktioniert? Wie kann ich es zum Laufen bringen?
Hinweis: Es gibt keinen 'neuen' Operator in C. – wildplasser
Ich soll die Variable von' c' nach 'C++' ändern – chqrlie
Sie können keine Arrays zuweisen. Ich glaube nicht, dass C++ zusammengesetzte Literale hat. – 2501