Mit Verwendung von pointer->funktion Speicherzugriffsfehler



  • naja mit new hat er mir wenigstens kein speicherzugriffsfehler geschmissen was wäre denn eine alternative?


  • Mod

    Ziehung zieh;
    


  • danke aber ich würde es gerne mit Pointer lösen



  • Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

    was hat den dieser fehler zu bedeuten?



  • wennoder schrieb:

    danke aber ich würde es gerne mit Pointer lösen

    Und warum?
    Ich würde auch gerne mit meinem Traktor zur Arbeit fahren, nur dauert das immer so lange...



  • naja interesse halber
    wenn es die Möglichkeit gibt das mit Pointer zu lösen würde ich diese gerne kennen



  • ???

    Ziehung z;
    Ziehung* pz = &z;
    ...
    

    Wenn du unbedingt auf den Pointer bestehst mach's so.

    MfG


  • Mod

    wennoder schrieb:

    naja interesse halber
    wenn es die Möglichkeit gibt das mit Pointer zu lösen würde ich diese gerne kennen

    Irgendeine Möglichkeit mit rohen Pointern gibt es schon, man muss es bloß richtig machen. Die saubere Methode, wenn man doch mal wirklich Pointer braucht, ist diese so weit wie möglich zu verstecken. In einer Klasse die nach RAII-Design aufgebaut ist. Das sollte man vielleicht einmal im Leben selber gemacht haben (also google mal, was das bedeutet), ansonsten benutzt man je nach Verwendungszweck die Container/Smartpointer aus der Standardbibliothek, die genau das machen.



  • yihaaa schrieb:

    Ziehung z;
    Ziehung* pz = &z;
    ...
    

    Wenn du unbedingt auf den Pointer bestehst mach's so.

    MfG

    okj hab das jetzt so geändert aber wenn ich die funktion

    void Lotto::ergebnisAusgeben(void)
    {
    	/*Tippzettel *tipp = new Tippzettel;
    	Tippzettel *tipp1 = new Tippzettel;
    	Tippzettel *tipp2 = new Tippzettel;
    	Ziehung *pzieh= new Ziehung;
    	Ziehung z; 
    	Ziehung* pzieh = &z;
    	Tippzettel t;
    	Tippzettel *tipp = &t;
    	Tippzettel *tipp1 = &t;
    	Tippzettel *tipp2 = &t;*/
    
    	unsigned int i=0;
    if(getTippzettelanzahl()==1)
    {
    	sort(pzieh->gezogene_zahlen.begin(),pzieh->gezogene_zahlen.end());
    	sort(tipp->getippte_zahlen.begin(),tipp->getippte_zahlen.end());
    	vector<int> intersec;
    	set_intersection(pzieh->gezogene_zahlen.begin(), pzieh->gezogene_zahlen.end(), tipp->getippte_zahlen.begin(), tipp->getippte_zahlen.end(), back_inserter(intersec));
    	cout<<tipp->adresse.at(0)<<endl;
    	cout<<tipp->adresse.at(1)<<endl;
    	cout<<tipp->adresse.at(2)<<endl;
    	cout<<"Die getippte Zahlen waren: "<<tipp->getippte_zahlen.at(0)<<" "<<tipp->getippte_zahlen.at(1)<<" "<<tipp->getippte_zahlen.at(2)<<" "<<tipp->getippte_zahlen.at(3)<<" "<<tipp->getippte_zahlen.at(4)<<" "<<tipp->getippte_zahlen.at(5)<<" "<<endl;
    	cout<<"Es stimmen folgende Zahlen ueberein: ";
    
    		 if( i<intersec.size())
    		 {
    			cout << " " << intersec.at(i);
             }else
    			 cout<<"Es stimmen keine Zahlen ueberein"<<endl;
    }
    

    bekomme ich folgende fehlermeldung

    Unbehandelte Ausnahme bei 0x012b6dd4 in OOAD.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xccccccd4.
    

    und werde darauf hingewiesen

    iterator end()
    {	// return iterator for end of mutable sequence
    		return (iterator(this->_Mylast, this));
    		}
    


  • SeppJ schrieb:

    Möglichkeit mit rohen Pointern gibt es schon, man muss es bloß richtig machen. Die saubere Methode, wenn man doch mal wirklich Pointer braucht, ist diese so weit wie möglich zu verstecken. In einer Klasse die nach RAII-Design aufgebaut ist. Das sollte man vielleicht einmal im Leben selber gemacht haben (also google mal, was das bedeutet), ansonsten benutzt man je nach Verwendungszweck die Container/Smartpointer aus der Standardbibliothek, die genau das machen.

    die Smartpointer schau ich mir jetzt mal an


Anmelden zum Antworten