Ich erhalte die Fehlermeldung:Casting void * zu anderen Arten
error: 'void*' is not a pointer-to-object type
Für den folgenden Code:
Button config_b1 = Button("b1");
Button config_b2 = Button("b2");
Button config_b3 = Button("b3");
const void *const buttons[3] PROGMEM = {
&config_b1, &config_b2, &config_b3
};
in irgendeiner Funktion:
(Button)*buttons[1]->setText("Foo");
Die Casting-Knopf schlägt fehl.
Dies ist nur ein vereinfachtes Beispiel. Die Array- "Buttons" werden verschiedene Arten von Objekten haben, daher muss ich sie als void initialisieren und dann auf den richtigen Typ innerhalb der Funktion umwandeln.
'Button config_b1 = Button (" b1 ");' Das sieht aus wie C++. Außerdem können Sie eine 'void *' nicht dereferenzieren, weil 'void' ein unvollständiger Typ ist. – InternetAussie
Es sieht aus wie OO-style-Programmierung mit C, von der Art, die Sie oft sehen, wenn C++ nicht verfügbar ist. –
@TobySpeight Wie können sie dann den Typnamen 'Button' als Funktion verwenden? In C++ ist dies gültig, da es ein "Button" -Objekt erstellen wird. Ich kann mir keinen Weg vorstellen, wie dies (neben der Makrohölle) gültig ist. – InternetAussie