C++ this(0x0)

patklu1988

Mitglied
Hi Leute,
ich bin gerade dabei mich nebenbei etwas mit C++ zu beschäftigen.
Dabei stoße ich während ich sonst eigentlich hauptsächlich mit Java programmiert habe auf ganz neue Probleme.
Mein Code lautet wie folgt:

Java:
vector <Zahlenpaar> Zahlenpaar::getZahlenpaare(){
    vector <Zahlenpaar> zahlenp;
    long counter=0;
    for(int i=0 ; i<(int)primzahlen.size() ; i++){
        for(int j=0 ; j<=i ; j++){
            unsigned long produkt = primzahlen[i] * primzahlen[j];
            if(produkt == schluesselZahl){
                zahlenp[counter].setZahlEins(primzahlen[i]);
                zahlenp[counter].setZahlZwei(primzahlen[j]);
                counter++;
            }
        }
    }

    return zahlenp;
}

Nun ist das Problem was sich beim Debuggen zeigt, liegt innerhalb der beiden set-Methoden, die dem vector jeweils Werte für die Zahlen zuweisen. Eine der Methoden sieht folgender Maßen aus:

Java:
void Zahlenpaar::setZahlEins(unsigned long z){
    zahlEins = z;
}

Nur der Debugger zeigt mir nun an, dass dieser Methode zwei Parameter übergeben werden und zwar zuerst "this(0x0)" und "z=..."

Ich bin nun soweit das dieses "this(0x0)" wohl mit einer Nullpointer Exception gleichzusetzen ist, daher vermute ich das ich den Vektor, beziehungsweise das einzelne Objekt in dem Vektor, nicht korreckt initialisiert habe. Wobei die Initialisierung in C++ ja auch etwas anders läuft als in Java, weil Anweisungen wie zB ".... = new...." gibt es ja nicht.
Ich habe bereits andere Objekte mit so ziemlich dem gleichen Code initialisiert. Was das Ganze für mich gerade extrem verwirrend macht.....
http://www.java-forum.org/images/smilies/bahnhof.gif
 

Ice

Mitglied
Update:

Hab es hinbekommen. :)

Einfach nachdem der Vektor "zahlenp" initialisiert wird noch eine größe bestimmen, zB (10). Schon klappt es :)

In C/C++ muss man den Speicher selbst allokieren und verwalten. Ich empfehle dir erst mit C anzufangen,
bevor du mit C++ rumspielst. Generell, ist es immer besser erst mit C anzufangen, und die Basics zu lernen,
da man das wissen auf jede andere Programmiersprache anwenden kann.
Programmieren lernen von Anfang an: c:start - proggen.org
 

Gucky

Top Contributor
Da muss ich ice widersprechen. C beinhaltet noch viele alte und überholte Konstruktionen, die in C++ besser gelöst worden sind (bspw. durch OOP). Ich habe direkt mit C++ angefangen und bereue es nicht im Geringsten.

Konstrukte wie ... = new... gibt es sehr wohl. Und zwar bei Zeigern. Klasse* test = new Klasse(); Allerdings müssen diese mit delete test; wieder freigegeben werden, da es keine GaarbageCollection in C++ gibt.
 

Neue Themen


Oben