• Hallo, dies betrifft C ++.

    Habe eine KLasse

    class TransactionList {

    blabla....
    }

    und danach eine Klasse Stock {

    TransactionList *stockTransactions;
    }


    Nun möchte ich von einer Methode der Klasse TransactionList auf stockTransactions zugreifen, das muss doch irgendwie gehen.
    Wie macht man das ??

    Wäre echt nett, könnte mir jemand helfen .

    Dankeschön

  • indem du den Pointer von stockTransactions an die vorgesehene Funktion von TransactionList übergibst

    '100 little bugs in the code, 100 bugs in the code. Fix one bug, compile it again: 101 little bugs in the code.
    101 little bugs in the code . . .'
    Continue until 0 Bugs reached...

  • funktioniert leider nicht.

    Ich würde nun gern in der untenstehenden Methode addTransaction aufrufen, wie müssen hier die Paramter sein, dass
    ich diese aufrufen kann ?

    void TransactionList::addTransaction (Item &itemP, int quantityP,TransactionList *neu ) {
    }

    void Stock::Adress(Item &itemP, int quantityP) {
    addTransaction(itemP,quantityP, &stockTransactions);


    Weiß einfach nicht , was ich falsch mache ....

    Jedenfalls danke für die Hilfe , Rienhard

  • äääh, es müsste "Item *itemP" heißen. Wenn du einen Pointer definieren willst, musst du * verwenden, nicht &


    gerne, Rienhard :)

    '100 little bugs in the code, 100 bugs in the code. Fix one bug, compile it again: 101 little bugs in the code.
    101 little bugs in the code . . .'
    Continue until 0 Bugs reached...

  • Mein Problem bei diesem Programm ist eigentlich etwas anderes.

    Ich habe in meinem Header file zwei Klassendefinitionen

    class TransactionList {
    char category;
    int quantity;
    TransactionList *next;
    TransactionList(blabla);
    addTransaction(Item &itemP, int quantityP);
    }

    class Stock {
    double value;
    TransactionList *stockTransactions
    }


    nun möchte ich von addTransaction aus auf stockTransactions der Klasse Stock zugreifen.
    Mir ist klar, dass das nur über Methoden geht, oder aber auch über eine Friend Deklaration.
    Wenn ich jetzt in der Klasse TransactionList die Klasse Stock als Friend deklariere, kann ich ja auf die Instanzvariablen auch zugreifen.
    Leider gibt mir der Compiler immer den Fehler aus, dass er Stocktransactions nicht kennt. Wahrscheinlich, weil ich diese Klasse nach TransactionList definiert habe.
    Wie kann ich nun den Compiler klarmachen, das diese schon existiert bzw diese Klasse vorher bekanntmachen.

    Wäre nett, würdet ihr euch meiner annehmen *grins

  • korrekt. gegebenenfalls würde ich in der Klasse Stock noch einen Wrapper bauen, einfach der Eleganz halber...

    Ich frage mich übrigens auch warum du eine Referenz übergibst und keinen Zeiger.

    "The letters are Hex, of an ancient mode, but the language is that of Microsoft, which I shall not utter here."

  • war ja nur ne frage.
    ich finde es nur unnötig eine referenz zu übergeben und dann einen zeiger darauf zu setzen, wenn man doch gleich den zeiger übergeben könnte

    "The letters are Hex, of an ancient mode, but the language is that of Microsoft, which I shall not utter here."

  • hatte etwas übersehen. ich dachte in der datenstruktur wird dann ein zeiger auf die übergebene referenz angelegt.

    ich hab irgendwie persönlich was gegen referenzen, da man das alles über zeiger viel eleganter lösen kann. und im hintergrund wird bei referenzen sowieso ein zeiger übergeben...

    "The letters are Hex, of an ancient mode, but the language is that of Microsoft, which I shall not utter here."

  • *g*
    Der neue Glaubenskrieg: Zeiger vs. Referenzen...

    "The letters are Hex, of an ancient mode, but the language is that of Microsoft, which I shall not utter here."

  • da ist ja ein reger Ansturm *g, jedenfalls dankeschön für die Hilfe,
    obwohl sie noch nicht geholfen hat.

    Ich habe, wie man oben unschwer erkennen kann, eine Lagerverwaltung zu erstellen. Man soll Items anlegen (funktioniert), Items in einer Listenstruktur ablegen (funktioniert) und danach Items ein oder auslagern.
    Sind zum Beispiel von dem Item 1 mit der Kategorie a 5 in der Liste gespeichert und will man 3 einlagern, sollen 8 drinnen sein.
    Leider bekomme ich bei einer Anweisung einen Laufzeitfehler und Windows meldet sich mit "Windows hat ein Problem festgestellt"...

    Irgendwie ist es blöd, den ganzen Code zu posten.

    Vielleicht ist ja wer so nett, der sich gut auskennt, der sich meiner annehmen kann.
    Falls ja, meine Mailadresse lautet weltfriede@gmx.net

    Ps: Sollte es bald haben das Programm ....

    Wäre echt nett ...Reinhard

  • Vielleicht solltest du mal einen Debugger benutzen. Und wenn du nicht weisst was das ist, solltest du das schnell rausfinden, wenn du wirklich ein größeres komplexes Programm schreiben willst. Schließlich kannst du nicht immer wenn du ein Problem hast, deinen Code ins www posten.

  • pack einfach mal deinen code und ich schau ihn mir bei gelegenheit an, kann aber noch etwas dauern... bin im moment ziemlich eingedeckt mit arbeit/lernen

    "The letters are Hex, of an ancient mode, but the language is that of Microsoft, which I shall not utter here."

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!