Argument einer Funktion soll public sein

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

Argument einer Funktion soll public sein

Beitrag 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
Die Sprache des Technikers ist die Skizze
veeman
Beiträge: 277
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Argument einer Funktion soll public sein

Beitrag 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?
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

Re: Argument einer Funktion soll public sein

Beitrag 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
Die Sprache des Technikers ist die Skizze
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Argument einer Funktion soll public sein

Beitrag von Christian81 »

Benutze C++ Datentypen wie z.B. std::vector ...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten