Hi
Ich möchte ein array's (alternative auch Listen) mit Bluetooth LE Services und Characteristic erstellen.
#include <ArduinoBLE.h>
BLEService *arr_ble_S[4] ;
arr_ble_S[0] = new BLEService("8e4211c0-2b3f-11ec-8d3d-0242ac130000");
Was mache ich falsch?
Warum kann ich ein Service erstellen mit:
BLEService TempService("8e4211c0-2b3f-11ec-8d3d-0242ac130000");
aber nicht mit:
BLEService TempService = new BLEService("8e4211c0-2b3f-11ec-8d3d-0242ac130000");
Irgendetwas scheinen ich nicht richtig verstanden zu haben. Eine suche nach:
"arduino array of class objects" hat mich nicht weitergebracht.
Danke
Ihr Beitrag wurde an seinen aktuellen Speicherort verschoben, da er besser geeignet ist.
Ist ein Zeiger auf ein Array.
BLEService *arr_ble_S[4] ;
wäre ein Array.
Gruß Tommy
Das ist ein Array aus Zeigern. Ein Zeiger auf ein Array wäre ein Zeiger auf Zeiger (weil Array Variablen selbst schon Zeigern entsprechen).
Weil new einen Zeiger liefert! Und kein Objekt
https://www.cplusplus.com/reference/new/operator%20new[]/
Ansonsten solltest du nicht außerhalb einer Funktion verwenden. Dann geht es auch.
Brauchst du hier überhaupt dynamischen Speicher oder machst du das nur weil du es irgendwo gesehen hast? Arrays kann man auch statisch initialisieren.
Um ein Globales Objekt zu erzeugen, brauchst du in C++ kein new
Auch nicht für ein Array von vier solchen Objekten.
Wenn du ein Array aus nicht initialisierten Zeigern auf solche Objekte hast, kannst du new verwenden, um diese Zeiger auf dynamisch erzeugte Objekte zeigen zu lassen, aber nur innerhalb einer Funktion (z.B. setup()). Aber warum?
system
Closed
April 10, 2022, 3:40pm
7
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.