objekt aus eine andere klasse holen

Gast #4109864
Lesenswert?
• ▲
▼
Hallo zusammen,

programmiersprache: C++

Ich habe folgende Problem:

Ich habe Zwei Klassen:

class A
{
  ....
  double getPeriodeA();
  .....
};

#include "A.h"
class B
{

  ....
  A a;
  double helpVariable;
  helpVariable= a.getPeriodeA();
  //hier bekomme ich nicht das Value der "getPeriodeA()"
  // warum ? was mache ich denn falsch?
}
Gast #4109874
Lesenswert?
• ▲
▼
Ralph schrieb:
>   //hier bekomme ich nicht das Value der "getPeriodeA()"

Sonern?

>   // warum ? was mache ich denn falsch?

Du zeigst nutzlose Codefragmente. Bitte poste ein minimales, aber 
vollständiges Beispiel, das du so durch den Compiler hast laufen 
lassen und das das Problem zeigt.
Gast #4109901
Lesenswert?
• ▲
▼
Ralph schrieb:
> Es wird keine Fehlermeldung gezeigt, aber das Value der "getPeriodeA()"
> ist sehr klein "6.3614772330140253e-270"

Schönes Beispiel von:
- Thread erstellt ohne essentiellen Informationen.
- Beim Antworten nicht auf EINE Frage eingegangen.
Den Thread muss ich mir merken.
Gast #4109937
Lesenswert?
• ▲
▼
Mit den gegebenen Informationen kann immer noch nur durch hellsehen oder 
mit sehr viel Glück vielleicht durch raten die Antwort finden.

ozelot schrieb:
> getPeriodeA() ist doch nur in class A definiert ?!?

Ja, und a ist ein Objekt der Klasse A. Also wird getPeriodeA() nicht für 
ein Objekt der Klasse B, sondern für eins der Klasse A aufgerufen. Warum 
sollte das nicht gehen?

operator schrieb:
> Ralph schrieb:
>> Es wird keine Fehlermeldung gezeigt, aber das Value der "getPeriodeA()"
>> ist sehr klein "6.3614772330140253e-270"
>
> Schönes Beispiel von:
> - Thread erstellt ohne essentiellen Informationen.
> - Beim Antworten nicht auf EINE Frage eingegangen.

Immerhin auf eine halbe Frage ist er eingegangen:

Rufus Τ. Firefly schrieb:
> beschreibe genau, was Du erwartest und was Du stattdessen erhältst.

Er hat zwar nicht geschrieben, was er erwartet, aber immerhin, was er 
stattdessen erhält.

> Den Thread muss ich mir merken.

Er ist ein wunderbare Beispeil dafür, wie man eine Frage stellt, wenn 
man eigentlich gar keine Antwort will.
Gast #4109949
Lesenswert?
• ▲
▼
Die Tatsache, dass der TE nicht in der Lage ist zu verstehen welche 
informationen er uns hier überhaupt zur Verfügung stellen muss, damit 
ihm geholfen werden kann zeigt, dass er das Programmieren lieber gleich 
lassen soll.....
#4109998
Lesenswert?
• ▲
▼
Ralph schrieb:
> class B
> {
>
>   ....
>   A a;
>   double helpVariable;
>   helpVariable= a.getPeriodeA();
>   //hier bekomme ich nicht das Value der "getPeriodeA()"
>   // warum ? was mache ich denn falsch?
> }

Eine Klassendefinition soll keine ausführbare Code enthalten. Deine 
Zeile "helpVariable = a.getPeriodeA();" muss in irgendeine Methode oder 
Funktion rein. Lies doch mal dein C++ Buch.
Gast #4110007
Lesenswert?
• ▲
▼
Eric B. schrieb:
> Eine Klassendefinition soll keine ausführbare Code enthalten. Deine
> Zeile "helpVariable = a.getPeriodeA();" muss in irgendeine Methode oder
> Funktion rein. Lies doch mal dein C++ Buch.

da er es kompilieren kann, und "nur" das falsche Ergebnis erhält wird es 
wohl daran nicht legen.
Gast #4110036
Lesenswert?
• ▲
▼
Rolf Magnus schrieb:
> Ja, und a ist ein Objekt der Klasse A. Also wird getPeriodeA() nicht für
> ein Objekt der Klasse B, sondern für eins der Klasse A aufgerufen. Warum
> sollte das nicht gehen?

Ich kann zwar nur Python und kein C++ und bin auch kein Experte, aber 
das vorgehen in einer Klasse eine Instanz einer anderen Klasse zu 
erzeugen halte ich für sinnlos. Um die Instanz der Klasse A zu erzeugen 
müssen der Klasse B auch alle Parameter von A bekant sein. Vererbung und 
gutes C++ Buch sind hier wahrscheinlich die hilfreichsten Ratschläge.
Gast #4110044
Lesenswert?
• ▲
▼
Karl schrieb:
> Ich kann zwar nur Python und kein C++ und bin auch kein Experte, aber
> das vorgehen in einer Klasse eine Instanz einer anderen Klasse zu
> erzeugen halte ich für sinnlos.

das macht man doch ständig? Alles ist ein Objekt damit muss man 
zwangsläufig jedes objekt was member einer Klasse ist auch erzeugen.
#4110059
Lesenswert?
• ▲
▼
Karl schrieb:
> Rolf Magnus schrieb:
>> Ja, und a ist ein Objekt der Klasse A. Also wird getPeriodeA() nicht für
>> ein Objekt der Klasse B, sondern für eins der Klasse A aufgerufen. Warum
>> sollte das nicht gehen?
>
> Ich kann zwar nur Python und kein C++ und bin auch kein Experte, aber
> das vorgehen in einer Klasse eine Instanz einer anderen Klasse zu
> erzeugen halte ich für sinnlos.

Warum? Ich muss doch nicht vererben um ein Object von A in B zu 
benutzen? Und wie soll das dann aussehen wenn ich 2 oder mehrere 
Instanzen von B in A brauche?

Es gibt einen grundlegenden Unterschied zwischen "ich habe ein Auto" und 
"Ich bin ein Auto":
1
class Auto {}
2

3
class HabeAuto // und erzeuge eins innerhalb meiner Klasse
4
{
5
private:
6
  Auto meins;
7
}
8

9
class BinAuto: public Auto //erbe also vom Auto
10
{
11
}
Gast #4110085
Lesenswert?
• ▲
▼
Eric B. schrieb:
> Warum? Ich muss doch nicht vererben um ein Object von A in B zu
> benutzen? Und wie soll das dann aussehen wenn ich 2 oder mehrere
> Instanzen von B in A brauche?
>
> Es gibt einen grundlegenden Unterschied zwischen "ich habe ein Auto" und
> "Ich bin ein Auto":

Ich würde das anders lösen. Ich erzeuge ein Instanz der Klasse Auto und 
Referenziere bei dem Besitzer auf das Instanz des Autos, was man 
besitzt. Sowohl Auto als auch Besitzer sind Entry-Klassen. Für die 
Verknüpfung kann man dann eine Control-Klasse anlegen.
Gast #4110089
Lesenswert?
• ▲
▼
Karl schrieb:
> Ich würde das anders lösen. Ich erzeuge ein Instanz der Klasse Auto und
> Referenziere bei dem Besitzer auf das Instanz des Autos, was man
> besitzt. Sowohl Auto als auch Besitzer sind Entry-Klassen. Für die
> Verknüpfung kann man dann eine Control-Klasse anlegen.

und was ist mit den ganzen anderen Eigenschaften vom Auto? Farbe, Anzahl 
sizte, Gewicht usw? Das sind alles Members von Auto. Und das können auch 
alles Objekte von anderen Klassen sein.
Gast #4110509
Lesenswert?
• ▲
▼
Peter II schrieb:
> und was ist mit den ganzen anderen Eigenschaften vom Auto? Farbe, Anzahl
> sizte, Gewicht usw? Das sind alles Members von Auto. Und das können auch
> alles Objekte von anderen Klassen sein.

Ändert aber nichts daran, dass ich die Objekte anderer Klassen nicht in 
der Klassendefinition initialisiere.

class Farbe():
  def _init_ (name, rgbCode):
   self.name = name
   self.rgb = rgbCode

class Auto():
  def _init_ (marke, Farbe):
   self.marke = marke
   self.farbe = Farbe

Farbe1= Farbe(rot, 0815)
Auto1 = Auto("Ford", Farbe1)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren