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?
}
Ralph schrieb:> //hier bekomme ich nicht das Value der "getPeriodeA()"
Wie diagnostizierst Du das?
Anhand Deines Code--Fragments ist nichts nachvollziehbar.
Zeige Code (echten Code), und beschreibe genau, was Du erwartest und
was Du stattdessen erhältst.
Ralph schrieb:> //hier bekomme ich nicht das Value der "getPeriodeA()"> // warum ? was mache ich denn falsch?
wissen wir nicht. Warum geht es denn nicht? Hast du eine Fehlermeldung?
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.
Peter II schrieb:> wozu? er erstellt doch ein object von a. Die Klasse B spielt überhaupt> keine rolle.
Er ruft aber eine Methode aus Klasse A in Klasse B auf.
Ralph schrieb:> Es wird keine Fehlermeldung gezeigt, aber das Value der "getPeriodeA()"> ist sehr klein "6.3614772330140253e-270"
einfach mal debuggen?
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.
Oliver S. schrieb:> ozelot schrieb:>> Er ruft aber eine Methode aus Klasse A in Klasse B auf.>> Nein.>> Oliver
Verstehe ich nicht !
class B
{
helpVariable= a.getPeriodeA();
}
getPeriodeA() ist doch nur in class A definiert ?!?
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.
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.....
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.
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.
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.
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.
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
classAuto{}
2
3
classHabeAuto// und erzeuge eins innerhalb meiner Klasse
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.
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.
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)