Member variable (private) an Funktion auserhalb der Klasse geben

FSA

Erfahrenes Mitglied
Hallo
Nun ich habe mal wieder en Problemchen ;)
Diesmal ist es so das ich eine Funktion habe die nichts mit einer Klasse zu tun hat, also:
C++:
void abc()
{
}
(Als bsp. )
Nun habe ich in meiner Klasse Cabc eine Varible XY( Typ float ). Ich möchte nun die Variable XY in Funktion abc abfragen können. Klar erster Gedanke Pointer als Parameter. Aber ne ist nicht. Ich darf der Funktion keinen Parameter geben da sieh von einer anderen Funktion aufgerufen wird auf die ich kein Einfluss habe. Wenn ich in der Funktion einfach Cabc blabla; mache und dann mit blabla aie Variable abfragen möchte, ist die natürlich leer -.-
Nun wie kriege ich das hin?
Danke
 
Zuletzt bearbeitet von einem Moderator:
Ohne Zugriff auf das Objekt geht das nicht.

Da fällt mir gerade nur die Möglichkeit ein, in deiner Klasse die Instanzen zu speichern, um sie dann per statische Methode abfragen zu können. Alle anderen Möglichkeiten fallen ja weg, da du keinen Einfluss auf die andere Funktion hast.
 
Danke, aber...
... dass doofe ist nur das ich sehr viel Instanzen von meiner Klasse erstellen werde. Und immer nur die Instantz abzuspeichern... uuf. Ich dachte acuh schon an globale Variablen aber das führt zu unsauberem Code-.- Und vorallem wenn man sich doof anstellt zu Linker fehlern O.o ;) Also andere Methoden gibts wirklich garnicht?
 
Wie wärs damit:

C++:
// Cabc.h

class Cabc 
{
	private:
		float XY;
		static float shareCurXY;
	public:
		float getXY();
		static void setShareCurXY(const float& sC);
		static float getShareCurXY();	
};

C++:
// Cabc.cpp
#include "Cabc.h"

float Cabc::shareCurXY = 9000;

float Cabc::getXY()
{
	return XY;
}

void Cabc::setShareCurXY(const float& sC)
{
	Cabc::shareCurXY = sC;
}

float Cabc::getShareCurXY()
{
	return Cabc::shareCurXY;
}

C++:
// main.cpp

#include "Cabc.h"

void abc();

int main()
{
	Cabc cabcInst;
	.
	.
	Cabc::setShareCurXY(cabcInst.getXY());
	tolleFunktion(abc);	
	.
	.
	return 0;
}

void abc()
{
	float xy = Cabc::getShareCurXY();
	process(xy);
}
 
Zuletzt bearbeitet:
Hi.
Ich dachte acuh schon an globale Variablen aber das führt zu unsauberem Code-.-
Bei dem was du vorhast fürchtest du unsauberen Code? :suspekt:
Also andere Methoden gibts wirklich garnicht?
Falls du das Problem nicht übermäßig vereinfacht hast und die Funktion tatsächlich keine Argumente bekommt, dann mußt du eine Möglichkeit schaffen irgendwie global auf den Wert einer bestimmten Instanz (die möchtest doch auf ein Instanzattribut zugreifen oder?) zuzugreifen. Ob du diese globale Variable in einem Namensraum steckst oder in eine Klasse oder einfach im globalen Namensraum ist dann fast nur Geschmackssache.

Gruß
 
Zurück