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.
Wie sieht die Fehlermeldung aus ? Wie die konkreten implementierungen von A und B ?
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?
ozelot schrieb: > ... erst vererben wozu? er erstellt doch ein object von a. Die Klasse B spielt überhaupt keine rolle.
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.
Es wird keine Fehlermeldung gezeigt, aber das Value der "getPeriodeA()" ist sehr klein "6.3614772330140253e-270"
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.
In Zeile 42 der 5. Datei des Projektes (sortiert nach Datum) fehlt das ';'.
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.
Meine Glaskugel sagt mir, dass er den Wert den er erwartet in einer neuen Instanz von B nicht finden wird.
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 | }
|
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)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.