BluetoothLE Class object List

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?

Da hast Du Recht.

Gruß Tommy