Funktion mit Rückgabewert Array

Hallo zusammen,

ich schreibe gerade an einem Programm und bekomme beim kompilieren folgende Fehlermeldung:

"error: expected unqualified-id before ‘[’ token

unsigned long read()"

Zum Programm:

In dem Sketch rufe ich eine von mir geschriebene Bibliothek auf, erstelle ein Objekt und will dann die Methode read() ausführen, welche ein unsigned long array zurückliefern soll:

#include <Ping>.h
Ping myping(2) //Objekt an Pin 2

void setup()
{
}

void loop()
{

myping.read()
}

In der Bibliothek sieht es wie folgt aus:

class Ping
{
public:
Ping (int pin)

unsigned long[] read();

private:

int _pin;
}

Kann sich da jemand einen Reim drauf machen? Habe ich das Array eventuell falsch deklariert?

Das geht nicht. In C/C++ sind Arrays keine Objekte sondern die Array Variablen sind nur Zeiger auf das erste Element (genauer: sie zerfallen in einen Zeiger). Und man darf niemals Zeiger auf lokale Variablen zurückgeben

Wenn man Werte als Arrays zurückgeben will muss man den Puffer als Parameter übergeben:

void func(long* buffer)
{
   buffer[0] = ...;
}

Oder so, damit man die Funktion direkt in andere Funktionen einsetzten kann:

long* func(long* buffer)
{
    ...
    return buffer;
}

Aber das Array muss außerhalb der Funktion existieren. Das Array könnte auch global in der Bibliothek existieren. Dann musst du aber auch einen long* zurückliefern. Nicht einen long:

long* read()
{
}

Aber das Array bloß nicht in der Funktion erstellen! Das kompiliert, aber macht nur Murks!

unsigned long[] read();

Wo ist der Variablenname?
Grüße Uwe

Hallo zusammen und danke für die schnelle Antwort.

@Serenifly Danke für die Erkärung, nun ist mir einiges klarer.

Ich lasse die "read" Methode nun als Void durchlaufen und habe mir für die 4 Variablen die ich auslesen wollte Getter Methoden geschrieben. Klappt super so.