C++ Fehler bei Array aus Liste aus Array

whasabi

Cadet 3rd Year
Registriert
Dez. 2013
Beiträge
42
Hallo :) Ich versuche hier, dass ich einen Array habe der aus Listen besteht die wieder aus einem Array aus 3 Elementen bestehen.

Wenn ich versuche eine Wert einzufügen kommt leider dann wenn ich die print-Methode ausführe nicht der eingefügte Wert raus... was mache ich falsch? Bitte um Hilfe!!! :(
C++:
#include <iostream>

using namespace std;

struct Block{
        int values [3];
        void add(int b){
            values[1]=b;}

        void print() {
            cout << values[0] << "," << values[1] << "," << values[2] << endl;
    }
};
    struct Node{
        Block value;
        Node *next;
        void add(int b){
            value.add(b);
        }
        void print() {
            value.print();
}
    };

    struct Bucket{

        Node bucket[2];

        void add(int b){
            Node *const start = new Node;
            Node * actual = start;
            Node &test= *actual;
            bucket[0]=  test;
            test.add(b);
        }
        void print(){
            bucket[0].print();}

    };

int main(){
    Node *const start = new Node;
    Node * actual = start;

    Bucket test;
    test.add(3);

    test.print();

}
 
Erste Frage, wieso legst du in main 2 Pointer vom Typ Node an, die du anschließend nie mehr verwendest?

Nun zum eigentlichen Problem. In Zeile 33 kopierst du mit dem Zuweisungsoperator deine Node-Instanz test (oder genauer gesagt die Node-Instanz, auf die die Referenz test verweist). Dann rufst du in Zeile 34 die Methode add() aber nicht an der Instanz auf, in die du gerade hineinkopiert hast (das wäre dann bucket[0]) sondern an der test-Instanz (bzw. Referenz).
 
ah danke :D

hups das hab ich wohl übersehen... bin zurzeit in der rumtestphase und hab das eig von main in die add-Funktion reingegeben aber anscheinend bei main nicht rausgelöscht
Ergänzung ()

Hab noch eine Frage

wenn ich das hier versuche

struct Bucket{
int i=1;
Node bucket;
....... (von oben)


wieso funktioniert das nicht?
dann bekomm ich so viele Fehlermeldungen.
 
Zuletzt bearbeitet:
whasabi schrieb:
Code:
 struct Bucket{
        int i=1;
        Node bucket[i];
};

Wenn du in C++ ein (nicht dynamisch allokiertes) Array erzeugen möchtest, muß die Angabe für die Array-Größe eine Konstante sein, weil die Größe schon zum Kompilierzeitpunkt bekannt sein muß. Hättest du geschrieben:

Code:
 struct Bucket{
        static const int i=1;
        Node bucket[i];
};

dann hätt's geklappt.
 
Zuletzt bearbeitet:
Zurück
Oben