1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Frage

  • Reinhard
  • 13. Januar 2003 um 19:04
  • Unerledigt
  • Reinhard
    6
    Reinhard
    Mitglied
    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
    7
    Soulmerge
    Mitglied
    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

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

  • Reinhard
    6
    Reinhard
    Mitglied
    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
    7
    Soulmerge
    Mitglied
    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 :)

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

  • Reinhard
    6
    Reinhard
    Mitglied
    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
    7
    Irrlicht
    Mitglied
    Reaktionen
    1
    Punkte
    421
    Beiträge
    82
    • 14. Januar 2003 um 10:37
    • #6

    mit ner Forwarddeklaration.

    das irrlicht

  • Judas42
    5
    Judas42
    Mitglied
    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.

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

  • Irrlicht
    7
    Irrlicht
    Mitglied
    Reaktionen
    1
    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?

    das irrlicht

  • Judas42
    5
    Judas42
    Mitglied
    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

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

  • Irrlicht
    7
    Irrlicht
    Mitglied
    Reaktionen
    1
    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. :)

    das irrlicht

  • Judas42
    5
    Judas42
    Mitglied
    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...

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

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

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

    das irrlicht

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

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

  • MaxAuthority
    17
    MaxAuthority
    Gewinner des Desktop-Contest 2002
    Reaktionen
    5
    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 :frowning_face:

    http://vimperator.org - Make Firefox behave like Vim

  • Reinhard
    6
    Reinhard
    Mitglied
    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
    7
    Irrlicht
    Mitglied
    Reaktionen
    1
    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.

    das irrlicht

  • Judas42
    5
    Judas42
    Mitglied
    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

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

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung