Variable in einer anderen Klasse lesen

Geht's ein bischen genauer? Ich habe gegoogelt aber nichts nennenswertes gefunden. Ausserdem habe ich noch nie was von properties im zusammenhang mit Klassen gehört.

Ein Blick in die VC++ Hilfe bzgl. Properties liefert mir 3222 Artikel.

Meine Funktionen sehen nun wie folgt aus:
C++:
void CGreiferDlg::OnGreifkraft() 
{
m_sGreifKraft.Format("%4.2f N",berechneKraft());
}

und

C++:
float CGreiferDlg::berechneKraft() const
{
return (m_iGewicht*0.001f * 9.80665f) * 1.01f;
}
 
Zuletzt bearbeitet:
'n Abend!

Wenn ich Dein Problem richtig verstanden habe, liefert der Member fKraftKlasseB 0 zurück, richtig? Du sprichst nicht von Fehlermeldungen?

Dann liegt das wohl daran, das CGreiferDlg::m_iGewicht gleich null ist, oder?

Gruß
Enum
 
Ja, die Member fKraftKlasseB liefert den Wert 0, Allerdings ist CGreiferDlg::m_iGewicht nicht Null sondern enthält den von mir eingegeben gewünschten Wert.

Ist die Zuordnung:
C++:
CGreiferDlg m_GreifKraft;
fGreifKraftBewegen = m_GreifKraft.berechneKraft();
denn Richtig? Also eigentlich doch schon, oder?
 
Abend!

Ob deine Ausdrücke da oben^^ richtig sind, weiß ich nicht, da ich deinen Source nicht komplett gesehen hab. Die Ursache deines Problems liegt in ebendiesem Source, soviel ist klar. :)
Entweder du postest deinen kompletten Source oder schickst in mal als private Nachricht.
Das wäre wohl das einfachste.

Gruß
Enum
 
Hallo Enumerator

Ich habe dir den Code gerade als Private Nachricht geschickt. Ich hoffe du findest den Fehler.

Vorab schon einmal ein fettes DANKE

King of Drums
 
@deepthroat

Sach' ma', kann es sein, dass alle drei zur selben Zeit geschrieben wurden?
Natürlich wurden sie das. Ich fand es nur lustig das es gleich 3 ähnliche Antworten gab. Meistens guck ich vorher noch bei der Vorschau ob schon jemand geantwortet hat bevor ich den die Nachricht absende, aber hat wohl nichts genützt.
Sach' ma', kann es sein, dass meist nicht mal annähernd so viel Interresse an einem Thema besteht?
Das kann wohl sehr gut sein. Normal ist das nicht ;-)

Gruß
 
So, habe mit Hilfe von Enumerator das Problem gelöst.

Hier die Lösung:
Der Fehler lag in der inkorrekten Zuweisung der Variable. Das habe ich nun wie folgt gemacht:
C++:
void CGreiferDlg::OnChangeGewicht() 
{
	// TODO: Wenn dies ein RICHEDIT-Steuerelement ist, sendet das Steuerelement diese

	// Benachrichtigung nicht, bevor Sie nicht die Funktion CDialog::OnInitDialog()

	// überschreiben und CRichEditCrtl().SetEventMask() aufrufen, wobei

	// eine ODER-Operation mit dem Attribut ENM_CHANGE und der Maske erfolgt.

	/////////////////////
	//EIGENER CODE START
	/////////////////////

	UpdateData(TRUE);
	float fGreifkraft;
	fGreifkraft=m_iGewicht*0.001f * 9.80665f*1.01f;
	m_sGreifKraft.Format("%4.2f N",fGreifkraft);	//Ausgabe des 1. Analogeingangs
	m_fGreifkraft=fGreifkraft * 36;					//36=36fache Verstärkung
	UpdateData(FALSE);

	//////////////////////
	//EIGENER CODE ENDE
	//////////////////////

	
}
Den Aufruf in der 2. Klasse "bewegen" erfolgt nun wie folgt:
C++:
CGreiferDlg *pDlg = (CGreiferDlg *)AfxGetMainWnd();
	m_fGreif = pDlg->m_fGreifkraft;
Der Aufruf mit:
C++:
CGreiferDlg fGreifKraft;
m_fGreif = fGreifKraft.m_fGreif;
funktioniert nicht.

Ein Dank noch einmal an alle Antworten.
 
Zurück