konstuktor mit Rückgabewert möglich?

melmager

Erfahrenes Mitglied
Ich schreibe grade meine erste class :)

ich spreche im Konstuktor über die schnittstelle ein Gerät an, gebe ein Zeichen aus =
Wenn Echo vorhanden = Gerät vorhanden

was ist nun besser:
über den Konstuctor ein boolwert zurück geben (falls das überhaupt möglich ist) und dann den aufruf von weiteren methoden im mainteil verhindern (if)
oder über eine publicVar den Status zurückgeben (auch per if im mainteil auswerten)

Wenn die Version über den Konstuctor besser ist wie gebe ich ein wert zutück und wie sieht dann die Instanzbildung aus?
 
Zuletzt bearbeitet:
Ich denk, dass es das nicht gibt, dass man beim Konstruktor auch einen Rückgabewert hat.
Machs am besten mit der Globalen Variable!
 
Das geht definitiv nicht !!!
Ein Konstruktor/Destruktor darf keinen Rückgabetyp haben.
Leg einfach in deiner Klasse eine privat-Membervariable an vom Type bool und schreib eine public-Methode die dir den Zustand der bool Variable zurückgibt:

Code:
class MyClass
{
  public:
	MyClass();
	bool GetState(){return _state;}
  private:
	bool _state;

};

int main(int argc, char *argv[ ])
{

	MyClass MyObject;
	bool ret = MyObject.GetState();
	return 1;
}

In der Implementation des Konstruktors, kannst du dann die Variable _state dementsprechend setzen.

Gruss Homer
 
Leg einfach in deiner Klasse eine privat-Membervariable an vom Type bool und schreib eine public-Methode die dir den Zustand der bool Variable zurückgibt:

und was Spricht gegen sowas?

class meineclass {
public:
bool binda;

meineclass() {
binda = true;
}
};

int main(int argc, char *argv[ ])
{

meineclass geraet;
if (geraet.binda) {
// wir können
}
return 1;
}

Oder stelle ich mir selbst ein Bein wenn ich classen schreibe die methoden und werte zurückgeben?
Oder ist es besser für jeden Wert ne Methode zu schreiben ?

Nachtrag: kann man den g++ zu etwas aussagefähigeren Fehlermeldungen übereden? Fehler in main int bla bla holf nicht gerade weiter, dabei hatte ich nur das ; hinter der class vergessen
 
Zuletzt bearbeitet:
und was Spricht gegen sowas?
Funktioniert natürlich schon. Aber das ist nicht Sinn von OOP, du kannst es auch in einem protected Block Reinschreiben, dann haben die vererbten Klassen ebenfals diese Eigenschaft mit drin.
Kleiner Tip:
Lies dir mal ein wenig über OOP und Klassen durch.

Gruss Homer
 
Lies dir mal ein wenig über OOP und Klassen durch.
Das mache ich fast täglich :)
Den einzigen vernünftigen Grund den ich im Buch gefunden habe warum man nicht via Var auf eine Class zugreifen soll ist der:
man kann ja auch werte in die var schreiben und so eventuell die class "verwirren"

geraet.binda = true;

werte = geraet.lesen(); // geht in eine endlos loop weil das Gerät nicht da ist

das geht eher in die Richtung: wie mache ich meine Class "wasserdicht" und schütze sie vor Blödsinn
aber dem Prinzip von OOP wiederspricht eine Freigabe von Vars nicht :)

dann haben die vererbten Klassen ebenfals diese Eigenschaft mit drin.
:) bei mir gibts nix zu erben *g* :)
 
Zuletzt bearbeitet:
Man soll die Werte von aussen halt nicht einfach verändern können - Natürlich gibt es Ausnahmen.

Die Schnittstellen einer Klasse sind ihre Methoden, sie kontrollieren alles und somit können die Privaten Instanzvariablen immer nur Werte haben, die auch zulässig sind.

Informier dich halt mal ein bisschen über OOP oder Klassendesign.

ja..dein erb zeugs, bei edit sieht man die älteren posts halt nicht^^

Vielleicht schon...irgendwann :)
 
Zuletzt bearbeitet:
Die Schnittstellen einer Klasse sind ihre Methoden, sie kontrollieren alles und somit können die Privaten Instanzvariablen immer nur Werte haben, die auch zulässig sind.
Dazu muss man IMHO nicht unbedingt eine eigene Methode zum Verändern der Mitgliedsvariable schreiben, das geht doch deutlich einfacher und schöner mit Eigenschaften. Das ist zwar im Prinzip genau das gleiche, hat aber den Unterschied, dass ausserhalb der Klasse nicht die Methoden sichtbar sind, sondern nur die Eigenschaften, die man i. d. R. genau so einfach handhaben kann, wie normale Mitgliedsvariablen.

Ich weiss allerdings nicht genau, ob Eigenschaften schon zum Prinzip der OOP gehören oder nur bei einigen Sprachen zusätzlich verfügbar sind.
 
Zurück