vector klasse



  • Hallo

    Ich habe wieder mal eine kleines Problem, für mich ist es ein grosses, da ich so nicht weiter komme 😞
    Hier einmal ein bisschen Code

    void Artikel::einlesen(std::vector<Artikel>& vectorArtikel){
    	std::string bezeichnung;
    	int bestand;
    	int minBestand;
    	double preis;
    	std::cout << "Bitte den Artikelnamen eingeben: ";
    	std::cin >> bezeichnung;
    	std::cout << "Bitte den aktuellen Bestand eingeben: ";
    	std::cin >> bestand;
    	std::cout << "Bitte den Minimalbestand eingeben: ";
    	std::cin >> minBestand;
    	std::cout << "Bitte den Preis: ";
    	std::cin >> preis;
    	Artikel::speichern(bezeichnung, bestand, minBestand, preis);
    
    	vectorArtikel.push_back (Artikel);
    }
    

    Ich habe eine Klasse Artikel, eine Instanz wird jeweils in einem vector gespeichert. Leider weis ich nicht wie ich die Instanz in einem vector speichere ohne dass ich die Instanz der Klasse an die Funktion als Referenz übergebe.
    Hat mir hier jemand einen Tip?

    Gruss Pardalis



  • ich bin mir zwar nicht ganz sicher, ob ich verstehe was du meinst. Aber meinst du vielleicht:

    vectorArtikel.push_back(*this);
    

    this ist ein Zeiger auf die Instanz.



  • War für mich ein bisschen schwierig zu erklären, aber dies triffts genau, die Instanzen werden jeweils im Vector gepspeichert.

    Besten Dank



  • dann solltest du ein vector von zeigern auf Artikel machen also

    std::vector<Artikel*> vectorArtikel = new std::vector<Artikel*>( );
    vectorArtikel.push_back( this ); // this ist ein Artikel
    


  • rüdiger schrieb:

    ich bin mir zwar nicht ganz sicher, ob ich verstehe was du meinst. Aber meinst du vielleicht:

    vectorArtikel.push_back(*this);
    

    this ist ein Zeiger auf die Instanz.

    Die Frage ist doch ob das Sinn macht. Für mich sieht das so aus, als würde in einer Memberfunktion einer Klasse "Artikel" dessen Instanz in einem Vector gespeichert... Scheint mir etwas ungewöhnlich 🙂
    Also wenn ich Instanzen anlege, dann werden die meist direkt bei Erzeugung in einen Container verfrachtet und nicht erst wenn man irgendeine MemberFunktion aufruft...



  • Es wird ja auch nicht die Instanz in den Container gefrachtet, sondern eine Kopie davon. Deswegen wäre vermutlich das Arbeiten mit Pointern eher im Sinne des .. ähmm... Sinns? Ah, Zwecks...



  • Fellhuhn schrieb:

    Es wird ja auch nicht die Instanz in den Container gefrachtet, sondern eine Kopie davon. Deswegen wäre vermutlich das Arbeiten mit Pointern eher im Sinne des .. ähmm... Sinns? Ah, Zwecks...

    Wäre da nicht ein vernünftiger CopyKonstruktor nötig? Wer weiß was er noch für Verpointerungen in der Memberliste hat...



  • Wieso überhaupt kopieren?



  • Fellhuhn schrieb:

    Wieso überhaupt kopieren?

    das wollte ich mit meinen Aussagen mehr oder weniger andeuten... ^^


  • Gesperrt

    Habe ein ähnliches Problem im Beitrag http://www.c-plusplus.net/forum/viewtopic-var-t-is-259316.html "Problem mit Vector und Konstruktor und this-Zeiger in Klasse"



  • Ich finde den Funktionsaufruf Artikel::speichern schon etwas merkwürdig. Das ist doch wohl keine statische Funktion, oder?


Anmelden zum Antworten