brauche hilfe



  • bin ein c++ anfänger und versuche die klassen zu verstehen.
    habe dieses programm programiert, aber es funktioniet nicht:

    #include <iostream>
    #include <stdlib.h>

    using namespace std;

    class r
    {
    public:
    unsigned int a;
    unsigned int b;
    };

    int main()
    {
    r ergebnis;
    ergebnis.a = 8;
    ergebnis.b = 3;
    int r;
    cout << "test" << "\n";
    r = a + b;
    cout << "ergebnis: " << r << "\n";
    system("PAUSE");
    return 0;
    }

    was habe ich falsch gemacht??



  • einmal: dein klassenname ist ziemlich schlecht gewählt, nenne eine klasse in bezug zu dem, was sie tut.

    zweitens: du verwendest r nochmal als variablenname... schlecht gewählt. einmal ist es ein selbstdefinierter datentyp, dann ein variablenname für eine integervariable?

    drittens: a und b sind nicht deklariert. was sind das für variablen?

    schau dir am besten nochmal ein tutorial an zu selbstdefinierten datentypen.



  • habe schon 5 tutorials zu diesem thema gelesen und auch ein buch für c++ anfänger, aber dort steht nicht wie es geht. die schreiben nur dummes zeug und führen einen haufen beispielprogramme an, aber schreiben nicht wie man sie in einem programm verwendet

    kann mir bitte jemand erklären, wie ein klasse funktioniert??



  • habe schon 5 tutorials zu diesem thema gelesen und auch ein buch für c++ anfänger, aber dort steht nicht wie es geht. die schreiben nur dummes zeug und führen einen haufen beispielprogramme an, aber schreiben nicht wie man sie in einem programm verwendet



  • Um zu erklären was Klassen sind, wie man sie einsetzt und wie sie funktionieren, kann man und wurden auch ganze Bücher geschrieben. Deine Frage ist etwas zu allgemein um sie hier (vollständig) zu beantworten. 🙄
    Vielleicht hast du bisher nicht die für dich richtigen Bücher/Tutorials gefunden.
    Hier im Forum sind die Probleme/Lösungen meist etwas kleiner aber dafür konkreter.
    Schau dich doch mal unter den Bücher-Links um oder Suche mal nach "Einsteiger"/"Bücher". Ähnliche Fragen wie deine gabs hier schon öfter, ganz sicher. 🙂

    mfg JJ



  • greenpeace schrieb:

    habe schon 5 tutorials zu diesem thema gelesen und auch ein buch für c++ anfänger, aber dort steht nicht wie es geht. die schreiben nur dummes zeug und führen einen haufen beispielprogramme an, aber schreiben nicht wie man sie in einem programm verwendet

    Vielleicht schnallst du es auch einfach nicht?!

    Ein Klasse kapselt nur Variablen und Methoden, die auf diese Variablen wirken. Mehr ist das im Grunde nicht.



  • greenpeace schrieb:

    habe schon 5 tutorials zu diesem thema gelesen und auch ein buch für c++ anfänger, aber dort steht nicht wie es geht. die schreiben nur dummes zeug und führen einen haufen beispielprogramme an, aber schreiben nicht wie man sie in einem programm verwendet
    kann mir bitte jemand erklären, wie ein klasse funktioniert??

    genau das problem hatte ich damals auch. alle welt sprach von oo und klassen und keiner sagte, was das soll.
    ich hatte sogar den code einer stack-klasse durchgearbeitet, aber immer noch keinen sinn darin gesehen.

    es kommen bem oo ein paar sachen zusammen und eine jede ist ausrechender grund, klassen (oder rototypen oder wasachimmer) zu benutzen.

    die funktionen und attribute sind besser aufgehoben. an einem ort, zusammen, durch private zum teil gekapselt. konstruktoren garantieren integrität. in sachen fehlersuche einfach ein traum. soweit zum syntaktischen zucker. an sich ist es ja wurst, ob man double foo(struct Bar* self,int x1,int x2) oder double Bar::foo(int x1,int x2) schreibt.

    und dann kommt da noch was fast filosofisches. der blickwinel ändert sich. die python-fans sind sehr stolz auf etwas, das sie "datenzentriertes programmieren" nennen. http://www.faqs.org/docs/diveintopython/regression_datacentric.html
    man legt mehr wert auf die daten und die ganze schutzarbeit dahinter beachtet man nicht so arg.
    vielleicht sollte man "datenorientiertes programmieren" dazu sagen? und "objektorientiertes programmieren" geht noch einen schritt weiter. man versucht nicht nur, das augenmerkt stark auf die daten zu lenken, sondern zusätzlich soll viel der schmutzarbeit vom typsystem ganz von alleine erledigt werden.



  • greenpeace schrieb:

    was habe ich falsch gemacht??

    ich glaube, dass du a und b aus der klasse meinst oder? dann musste das auch so schreiben, wie bei der zuweisung...

    greenpeace schrieb:

    ergebnis.a = 8;
    ergebnis.b = 3;

    also:

    r = ergebnis.a + ergebnis.b



  • danke, leech jetzt funktionierts.



  • @greenpeace

    was nicht heißt, das du jetzt mal überlegen solltest, was die fehlermeldungen genau bedeuten, die bei deinem obigen programm kamen, und warum a und b nicht deklariert waren.
    es nützt nix, die lösung zu bekommen, wenn die grundlage fehlt.
    lies dir volkards anmerkung nochmal genau durch, und arbeite doch mal sein tutorial durch..

    so long



  • elise schrieb:

    @greenpeace

    was nicht heißt, das du jetzt mal überlegen solltest, was die fehlermeldungen genau bedeuten, die bei deinem obigen programm kamen, und warum a und b nicht deklariert waren.
    es nützt nix, die lösung zu bekommen, wenn die grundlage fehlt.
    lies dir volkards anmerkung nochmal genau durch, und arbeite doch mal sein tutorial durch..

    so long

    werde mir das c++ buch für dummies kaufen und das muss ja zu verstehen sein.



  • solche bücher kauft man nicht, man leiht sie höchstens aus der bibliothek. zumindest hier stehen einige anfängerwerke in den normalen stadtbibliotheken zur ausleihe rum.
    und die tutorials auf der tutorialseite sind gut. mache einfach ein paar durch, vor allem volkards. danach wird alles klarer.
    geld ausgeben kannst du später noch genug!


Anmelden zum Antworten