Vector in Methode



  • v.trigo_berechnen(t1)

    Das ist v von Verarbeiten. Wenn ich das nicht tue, sagt er mir, es wäre nicht deklariert ...


  • Mod

    VIVUSorg schrieb:

    v.trigo_berechnen(t1)

    Das ist v von Verarbeiten. Wenn ich das nicht tue, sagt er mir, es wäre nicht deklariert ...

    Das ist wieder das gleiche wie vorher mit dem p. Du legst wild und ohne Plan Objekte an, weil der Compiler meckert, ohne zu verstehen, warum er meckert. Das v hat mit deinem aktuellen Objekt nichts zu tun.

    Dein Design ist wirklich sehr komisch.



  • Solange das Design nur komisch ist, aber funktioniert, macht das nichts 🙂

    Wie kann ich dem Compiler denn sagen, dass die Funktion deklariert ist?

    Ich habe jetzt nur noch in der main() Parser p; und Verarbeiten v; oder kann ich hier auch durch das vererben Parser p; weglassen?



  • ...



  • VIVUSorg schrieb:

    Solange das Design nur komisch ist, aber funktioniert, macht das nichts 🙂

    Funktioniert aber nicht.



  • In der main() habe ich Parser p; und Verarbeiten v; und sonst habe ich keine neuen Objekte erstellt.

    Wie soll ich denen dann die Methode in der MainParser Methode aufrufen? Hängt das mit der Vererbung zusammen? Oder sind in der Main zu viele Objekte erstellt? In welche Richtung soll ich nachlesen? Ich muss/will ja im Prinzip eine Basis Methode in einer Methode der Oberklasse nutzen.

    // Edit: Stimmt, funktionieren tuts leider nicht. Du könntest mir aber sagen, was du mit komisch meinst. Nur komisch ist ziemlich schwer zu interpretieren...



  • VIVUSorg schrieb:

    In der main() habe ich Parser p; und Verarbeiten v; und sonst habe ich keine neuen Objekte erstellt.

    Und woher kommt dann v in der Memberfunktion?

    Wie soll ich denen dann die Methode in der MainParser Methode aufrufen?

    (pure) virtual Memberfunctions

    Hängt das mit der Vererbung zusammen?

    Jein.

    Oder sind in der Main zu viele Objekte erstellt?

    Ja.

    In welche Richtung soll ich nachlesen?

    Im Forum ist ein Thread über die Bücher, Link dazu in SeppJs Signatur.

    Ich muss/will ja im Prinzip eine Basis Methode in einer Methode der Oberklasse nutzen.

    Basis und Oberklasse ist idR dasselbe.

    Du könntest mir aber sagen, was du mit komisch meinst. Nur komisch ist ziemlich schwer zu interpretieren...

    Angefangen mit:
    Verarbeiten ist nicht Parser.
    Wurstbrot ist Supermarkt, aber Verarbeiten ist nicht Parser.


  • Mod

    VIVUSorg schrieb:

    // Edit: Stimmt, funktionieren tuts leider nicht. Du könntest mir aber sagen, was du mit komisch meinst. Nur komisch ist ziemlich schwer zu interpretieren...

    Das war eigentlich die höfliche Art zu sagen "totaler Mist". Da wollte ich mal einmal nicht so negativ sein und schon kommt es auch falsch an.



  • Anstelle von Verarbeiten hätte ich auch Executor nehmen können 🙂 Und Verarbeiten ist nicht Parser ist klar, wollte ich auch nicht nutzen, falls ich das getan hab 🙂

    Im Grunde wollte ich das zerflücken und das anschließende weiterverarbeiten in zwei klassen trennen. Um voran zu kommen, werde ich die Methode aber in Parser stecken... und erstmal abwarten, bis Vererbung in der Vorlesung an die Reihe kommt 🙂 Ich weiß, der einfache Weg ist nicht immer der Beste...


  • Mod

    VIVUSorg schrieb:

    Anstelle von Verarbeiten hätte ich auch Executor nehmen können 🙂 Und Verarbeiten ist nicht Parser ist klar, wollte ich auch nicht nutzen, falls ich das getan hab 🙂

    Genau das hast du aber getan, denn diese Beziehung wird durch die (public) Vererbung ausgedrückt. Das Beispiel von Nathan mit dem Wurstbrot und dem Supermarkt ist ein Beispiel aus dem schrecklich schlechten Lehrbuch "C++ von A bis Z", dessen Autor (J. Wolf) ebenfalls Vererbung nicht kapiert hat. Der ist hier so eine Art Forenlegende, da fast alle dummen Fragen (ja, die gibt es) hier im Forum darauf zurückgehen, dass der Fragesteller eines seiner Bücher gelesen hat.



  • VIVUSorg schrieb:

    Anstelle von Verarbeiten hätte ich auch Executor nehmen können 🙂 Und Verarbeiten ist nicht Parser ist klar, wollte ich auch nicht nutzen, falls ich das getan hab 🙂

    Im Grunde wollte ich das zerflücken und das anschließende weiterverarbeiten in zwei klassen trennen. Um voran zu kommen, werde ich die Methode aber in Parser stecken... und erstmal abwarten, bis Vererbung in der Vorlesung an die Reihe kommt 🙂 Ich weiß, der einfache Weg ist nicht immer der Beste...

    Es ist auch nicht der einfachste Weg.
    Der einfachste Weg wäre ein freie Funktion.
    Vererbung steht für eine "ist ein" Beziehung. In deinem Fall heißt das: Verarbeiten ist ein Parser. Das ist genauso falsch wie Executor ist ein Parser.
    OOP-Design ist nicht irgendwie irgendwas hinklatschen, hauptsache du hast Polymorphie. OOP-Design ist Planung pur.


Anmelden zum Antworten