Seite 1 von 1

Argument einer Funktion soll public sein

Verfasst: 26. Juni 2018 11:52
von Chri
Hi

Habe in einer Klasse einen SLOT, der ein Array empfängt:

Code: Alles auswählen

void ht_ww_b::getL(double L_Hzg[57][12])
{
qDebug()<<L_Hzg[23][0];  //funktioniert
}
Wie kann ich L_Hzg public machen?
Wenn im Header:

Code: Alles auswählen

public:
double L_Hzg[57][12]
dann liefert:
qDebug()<<L_Hzg[23][0] außerhalb von getL(..) 0 bzw einen falschen Wert.

Meine Krückenlösung:
Im Header deklariere ich ein anderes public-Array
und in getL(..) kopiere ich L_Hzg in das andere.

Aber das kanns ja wohl nicht sein?

LG
Chri

Re: Argument einer Funktion soll public sein

Verfasst: 26. Juni 2018 17:34
von veeman
Was kann daran nicht sein? Der Wert von
L_Hzg ist halt nur innerhalb des Funktionsscopes gültig. Wenn du denn Inhalt außerhalb haben möchtest musst du diesen halt in eine außerhalb gültige Variable kopieren.

Was hast du vor?

Re: Argument einer Funktion soll public sein

Verfasst: 26. Juni 2018 18:03
von Chri
Was mich stört ist, dass doppelter Speicher verwendet wird.
Wenn es kein Array ist, kann man das Ganze mit einer Referenz machen:

Code: Alles auswählen

void ht_ww_b::getL(&wasAnderes) {.....
Ohne Referenz wird eine Kopie von wasAnderes angelegt, die verändert wird, aber nur lokal wirkt.
Mit Referenz wird wasAnderes direkt verändert, wodurch es auch außerhalb wirkt.
Weitere Vorteile: Speicherschonend, schneller. (Hab ich so richtig verstanden. Oder? )

Bei Arrays gelingt mir das aber nicht. Fehler: Array of references.


LG
Chri

Re: Argument einer Funktion soll public sein

Verfasst: 27. Juni 2018 06:24
von Christian81
Benutze C++ Datentypen wie z.B. std::vector ...