Argument einer Funktion soll public sein

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

Argument einer Funktion soll public sein

Beitrag von Chri » 26. Juni 2018 11:52

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: 247
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Argument einer Funktion soll public sein

Beitrag von veeman » 26. Juni 2018 17:34

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?
mfg veeman

mage-dev

Chri
Beiträge: 86
Registriert: 23. Juni 2017 12:32

Re: Argument einer Funktion soll public sein

Beitrag von Chri » 26. Juni 2018 18:03

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: 7260
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Argument einer Funktion soll public sein

Beitrag von Christian81 » 27. Juni 2018 06:24

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

'Funktioniert nicht' ist keine Fehlerbeschreibung

Antworten