Variable in einer anderen Klasse lesen

Hallo,

ich habe folgendes Problem bei der C++ Programmierung.

Ich berechne in Klasse A den Wert Kraft. Nun möchte ich diesen Wert in Klasse B weiter behandeln. Wie kann ich aber den Wert in der Klasse B lesen.

Wer kann mir einfach erklären wie das geht. Ich bin in der C++ Programmierung noch ein Anfönger.

DANKE für Eure Hilfe
 
Moin!

Du musst Dein Problem schon etwas genauer beschreiben. Handelt es sich um eine Member-Variable der Klasse (A) und ist sie als public oder als private deklariert? Ist die Variable statisch? (...)
Am besten, du postest mal einen Auszug aus deinem Quellcode bzw. ein Beispiel.

Gruß
Enum
 
Hier ist die Funktion der Klasse A

void CGreiferDlg::OnGreifkraft()
{
float fGreifkraft;
fGreifkraft=m_iGewicht*0.001f * 9.80665f;
fGreifkraft=fGreifkraft * 1.01f;
m_sGreifKraft.Format("%4.2f N",fGreifkraft);
}

Die Variable fGreifkraft möchte ich nun in einer anderen (void bewegen::auf()) benutzen.
 
Das wird kaum gehen, da diese Variable in der Funktion deklariert wird und nach Beenden der Funktion nicht mehr existiert.
Am besten machst Du die Variable 'fGreifkraft' zu einer protected Membervariablen der Kalsse A. Dann schreibst Du eine public Memberfunktion float GetGreifkraft(), die den Wert der Membervariablen zurückgibt. Diese kannst Du dann aus der anderen Klasse aufrufen.
So kan man zwar den Wert der Variablen nach außen geben, ihn aber nur von innerhalb der Klasse setzen.

P.S.: Wenn Du Code postest, benutze bitte die Code-Tags.
 
Hi.

Du hast die Variable fGreifkraft innerhalb der Methode definiert - deshalb ist die Variable auch nur dort benutzbar und sichtbar.

Du mußt die Variable als Member Variable definieren und dann eine Methode zum Zugriff darauf definieren:
C++:
class CGreiferDlg {
private:

  float m_fGreifkraft;

public:
  float getGreifkraft() {
    return m_fGreifkraft;
  }
...
};
...
void CGreiferDlg::OnGreifkraft()
{
float fGreifkraft;
fGreifkraft=m_iGewicht*0.001f * 9.80665f;
fGreifkraft=fGreifkraft * 1.01f;

m_fGreifkraft = fGreifkraft;
m_sGreifKraft.Format("%4.2f N",fGreifkraft);
}
Gruß

PS: Bitte verwende zukünftig für Code den du postest die entsprechenden Code-Tags ([code=cpp]...[/code] für C++ bzw. [c]...[/c] für C usw.)
 
Ah ja...

Oder du schreibst eine Funktion wie
Code:
float CGreiferDlg::berechneKraft() const
{
return (m_iGewicht*0.001f * 9.80665f) * 1.01f; 
}

Dann sähe z.B. dein Code für OnGleitkraft so aus...
Code:
void CGreiferDlg::OnGreifkraft()
{
m_sGreifKraft.Format("%4.2f N",berechneKraft());
}

Es gibt noch ca. zwetausendfünfhundertsiebenundvierzig komma dreivierneun andere Methoden, aber berechneKraft() find' ich hier am sinnvollsten.

Ist deine Frage beantwortet?

Gruß
Enum
 
Zuletzt bearbeitet:
@deepthroat

Sach' ma', kann es sein, dass alle drei zur selben Zeit geschrieben wurden?
Sach' ma', kann es sein, dass meist nicht mal annähernd so viel Interresse an einem Thema besteht? :rolleyes:

Egal.
Gruß
Enum
 
Vielen Dank für die Antworten. Ich bin schon ein Stück weitergekommen.
Aber wie nun greife ich auf die Variable m_fGreifKraft in der anderen Klasse zu.

Ich habe das mal so pobiert:
C++:
CGreiferDlg m_GreifKraft;
fKraftKlasseB = m_GreifKraft.getGreifKraft();


Leider liefert mir fKraftKlasseB aber keinen Wert.
 
Zurück