1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Frage

  • Reinhard
  • 13. Januar 2003 um 19:04
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Reinhard
    Punkte
    280
    Beiträge
    39
    • 13. Januar 2003 um 19:04
    • #1

    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

  • Soulmerge
    Punkte
    405
    Beiträge
    71
    • 13. Januar 2003 um 19:34
    • #2

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

  • Reinhard
    Punkte
    280
    Beiträge
    39
    • 13. Januar 2003 um 20:13
    • #3

    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

  • Soulmerge
    Punkte
    405
    Beiträge
    71
    • 13. Januar 2003 um 20:44
    • #4

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


    gerne, Rienhard :)

  • Reinhard
    Punkte
    280
    Beiträge
    39
    • 14. Januar 2003 um 00:06
    • #5

    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

  • Irrlicht
    Punkte
    421
    Beiträge
    82
    • 14. Januar 2003 um 10:37
    • #6

    mit ner Forwarddeklaration.

  • Judas42
    Punkte
    195
    Beiträge
    36
    • 14. Januar 2003 um 10:56
    • #7

    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.

  • Irrlicht
    Punkte
    421
    Beiträge
    82
    • 14. Januar 2003 um 11:00
    • #8
    Zitat

    Original geschrieben von Judas42
    Ich frage mich übrigens auch warum du eine Referenz übergibst und keinen Zeiger.

    Aus welchem Grund sollte er nicht?

  • Judas42
    Punkte
    195
    Beiträge
    36
    • 14. Januar 2003 um 11:34
    • #9

    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

  • Irrlicht
    Punkte
    421
    Beiträge
    82
    • 14. Januar 2003 um 11:40
    • #10

    Da hast du schon recht.
    Aber wir wissen ja nicht, ob er dann aus der Referenz 'itemP' einen Pointer machen will. Vielleicht reicht ihm ja eine Referenz. :)

  • Judas42
    Punkte
    195
    Beiträge
    36
    • 14. Januar 2003 um 12:22
    • #11

    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...

  • Irrlicht
    Punkte
    421
    Beiträge
    82
    • 14. Januar 2003 um 12:27
    • #12

    Dafür muss man bei Referenzen weniger tippen. :)

  • Judas42
    Punkte
    195
    Beiträge
    36
    • 14. Januar 2003 um 12:31
    • #13

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

  • MaxAuthority
    Punkte
    3.165
    Beiträge
    626
    • 14. Januar 2003 um 18:57
    • #14

    ich nehm beides, obwohl mir Pointer doch etwas lieber sind - leider dürfen wir es im Info-Studium selbst ja viel zu wenig, weil ja fast alles in Java *cough* ist :(

  • Reinhard
    Punkte
    280
    Beiträge
    39
    • 14. Januar 2003 um 22:25
    • #15

    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

  • Irrlicht
    Punkte
    421
    Beiträge
    82
    • 15. Januar 2003 um 08:39
    • #16

    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.

  • Judas42
    Punkte
    195
    Beiträge
    36
    • 15. Januar 2003 um 13:35
    • #17

    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

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum