Problem mit Zeigern



  • Hallo liebe Community,
    bin Newbie hier, nehmt bitte Rücksicht 😉

    vorab: ich habe im Internet gesucht und wurde nicht fündig, sollte das an meinem mangelnden Können im Umgang mit Dr. Google liegen tuts mir leid ^^

    So nun zu meinem Problem.
    Ich bin mehr oder weniger Umsteiger von Java auf C++, was syntaxtechnsich eigentlich kein großes Problem darstellt. (Java verwenden wir in der Schule und mittlerweile bin ich zu dem Entschluss gekommen, auf C++ umzusteigen..., wenn ich das schaffe)
    Ich habe mal einen kleinen feinen Formelparser geschrieben in Java, der einen Binärbaum aufbaut und nun steh ich vor dem Problem, dass ich folgendes in C++ nicht umgesetzt bekomme:

    public class node {
    
      public node left, right; //Wären die Zeiger in C++
      public String data; //Inhalt der jeweiligen Instanz
    
      public node(String d) { //Konstruktor, erklärt sich von allein, hoffe ich
    
        this.data = d;
        this.left = null;
        this.right = null;
    
      }
    
    }
    

    Wäre richtig happy, wenn mir jemand das umsetzen könnte und am besten auch erklären...
    Die restlichen Methoden, die dann die Formel zerlegen, werde ich dann denk ich mal irgendwie umtippen können, sonst wende ich mich einfach nochmal an euch ^^

    Danke im Voraus, Daniel



  • Das ist kein C++. IMHO ist das C# und damit im falschen Forum.



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C# und .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Es ist kein C++ und auch kein C# ... 😞 Das sollte Java sein, deswegen steht da Java-Code... Ich wollte wissen wie ichs richtig in C++ umsetze, weil ich es nicht richtig hinbekomme!
    Falls das irgendein Mod liesst, bitte wieder zurückverschieben, danke.


  • Administrator

    @Mods,
    Aber nicht zurück in den MFC Bereich, sondern nach C++ 😃

    @Wasabi666,
    Tjo, kommt davon, wenn man im falschen Forum postet, dann wird man rumgeschubst. Bevor du dann im C++ Bereich landest, gebe ich dir schon mal einen Tipp:
    Zeig was du bisher versucht hast und woran du gescheitert bist. Man wird es nicht einfach für dich lösen, wenn du keine Eigeninitiative zeigst.

    Und noch ein paar Tipps zum Umstieg:
    1. C++ und Java sind zwei KOMPLETT UNTERSCHIEDLICHE SPRACHEN. Nicht mal die Syntax ist wirklich gleich.
    2. Probier in C++ nicht wie in Java und in Java nicht wie in C++ zu programmieren, damit fällst du auf die Nase.
    3. Besorg dir ein gutes C++ Buch und zwar ein Grundlagenbuch. Vergiss was du in Java gelernt hast, das meiste kannst du in C++ nicht anwenden. Gute und meist empfohlene Bücher sind:
    - C++ Primer
    - Thinking in C++ 1&2 (auch gratis als PDF verfügbar, nur Englisch)

    Grüssli



  • Danke dir schonmal Dravere. Also woran ich gescheitert bin, sind die Zeiger innerhalb einer Klasse, die vom Typ der Klasse sind, in welcher sie auch instanziert werden, und mich beschleicht das gefühl, dass das in C++ ein Ding der Unmöglichkeit ist, ich hoffe Ihr könnt mich eines Besseren belehren :-), wär ich sehr glücklich drüber ^^



  • Also in C++ sieht der Code folgendermaßen aus:

    #include <string>
    
    class node
    { 
    public:
        node *left, *right; // sind die Zeiger(*) in C++
        std::string data; //Inhalt der jeweiligen Instanz
    
        node(const std::string &d)
          : data(d), left(0), right(0) // Initialisierungsliste
        {
        }
    }
    

    wobei die Member besser 'private' wären und über konstante getter-Methoden ausgelesen werden sollten.

    In Java und C# sind Klassen immer Referenztypen, während in C++ standardmäßig Wertetypen sind.



  • Ok danke, jetzt weiß ich wenigstens mal warum das mim string net wollte 😃 std:: fehlte ^^
    Zeiger hab ich auch gerallt (mich schon mit befasst), nur der konstruktor... warum konstante, warum wird die initialisierung direkt hinter dem methodenkopf durchgeführt?? Also ich kann mich zwar damit abfinden, dass es so gemacht wird, aber innerhalb der Methode ist das nicht möglich?? (Ich weiß ich sollte mir eigentlich erst Literatur zum Thema vornehmen, aber ich hab's bisher immer so gehalten, dass ich durch Projekte die sprachen gelernt habe, und ich hab dabei wunderbar viel gelernt)

    Edit: Bevor ichs vergesse - warum das & vorm d ^^? soweit ich weiss gibt das dann doch die speicheradresse an oder?



  • Oh, und noch eine Frage...
    Mach ich nicht praktisch meine "eigenen" Zeiger, indem ich in der Klasse node einfach node-Objekte initialisiere... (In Java gabs halt in dem Sinne keine Zeiger)

    Sprich: node-Objekt hat ein linkes und ein rechtes node-Objekt, die wieder ein linkes und rechtes haben...
    Ich bin grad total unsicher, böses Java -.-


  • Administrator

    Also tut mir leid, aber da kann ich wirklich nur noch etwas sagen:
    Lies ein Buch, so wie du es selbst schon festgestellt hast. Man darf hier schliesslich erwarten, dass du zumindest die Syntax und die wesentlichen Grundlagen der Sprache kennst. Das ist hier kein interaktives Tutorial oder sowas in der Art.

    Und erst recht bei C++ empfehle ich dir dringends die Grundlagen zu büffeln, denn die sind nicht einfach und müssen sitzen.

    Grüssli



  • 😃 ok da hast du recht, syntax... sitzt prinzipiell schon, und einige konsolenanwendungen hab ich geschrieben, am besten sacht mal wie weit ich sein sollte um sowas hier zu posten?



  • Sooo, mir wurde eben C++ Primer empfohlen, auf die schnelle hab ichs bei Amazon nur auf Englisch gefunden?! Hat jemand ncoh andre VOrschläge oder einen Link zur deutschen Variante?


  • Administrator

    Wasabi666 schrieb:

    😃 ok da hast du recht, syntax... sitzt prinzipiell schon, ...

    Da habe ich grosse Zweifel, denn was du bisher geschrieben hast, lässt auf etwas anderes schliessen. Ich kann mich nur wiederholen, die Syntax ist in Java und C++ anders! Sie sehen höchstens ähnlich aus, aber das ist schon alles. Oft ist sogar bei ähnlicher Syntax eine andere Bedeutung vorhanden.

    Wasabi666 schrieb:

    ... , am besten sacht mal wie weit ich sein sollte um sowas hier zu posten?

    Diese Frage ist äusserst schwer zu beantworten. Grundsätzlich solltest du hier nicht mit Fragen daherkommen, wo die Antwort in einem Grundlagenbuch steht. Du solltest die Grundlagen beherrschen. Zum Beispiel wissen, was eine Referenz ist.

    Das Forum soll mehr eine zusätzliche Hilfestellung sein. Also wenn du ein Buch liest und bei einem Kapitel Probleme hast etwas zu verstehen, dann kannst du die Leute im Forum konsultieren. Dabei aber nicht passiv sein, sondern aktiv vom ersten Beitrag an.
    Oder wenn du konkrete Problemstellungen hast, wo du selber es schon versucht hast, aber irgendwo stecken geblieben bist, dann kannst du hier Hilfe finden. Zeig aber dann, was du bisher schon gemacht hast.

    Auch gibt es im Forum FAQs und eine Suchfunktion, wenn diese zum Teil auch ein wenig zu wünschen übrig lässt.

    Zum Primer:
    Das erste Resultat bei einer Suche nach "C++ Primer" auf amazon.de ist die deutsche Version ...
    C++ Primer | ISBN: 3827326125

    Grüssli



  • Oh. Ich schwörs bei mir wars Englisch... Sorry und Danke, ich denke das ist gut investiertes Geld!
    Danke Euch allen, wenn ich Probleme habe, weiss ich wo ich mich mit meiner konkreten und umfassenden Fragestellung hinwenden kann 🙂

    lg daniel

    Edit: ich schwör gar nix mehr, bei mir ist es auf einmal auch direkt die deutsche... bin heute iwi... verwirrt


Anmelden zum Antworten