instanzen automatisch hinzufügen



  • wenn deine Bank keine Schalterdame (bzw. Funktion) zur verfügung stellt Zugriff von ausserhalb auf die Konten erlaubt, dann nich ^^



  • Bank::Bank() {
        ostringstream os;
    
        for (int i=0; i<10000; ++i)
        {
            os.str("");
            os << "Name" << i;
            Konto k(os.str(), 0.00f, 200.00f);
            Reiffeisen->konto_Hinzufuegen(konto);
        } 
    }
    


  • Bank Raiffaisenbank;
    
    	for (int i=0; i<1000; i++) {
    		ostringstream s;
    		s << "Konto " << i;
    		Konto k(s.str());
    		Raffaisenbank.konto_hinzufügen(k);
    	}
    


  • Du kannst mit dem letzten Konto, das angelegt wird auch was ausserhalb der for-Schleife machen, wenn Du es ausserhalb der for-Schleife anlegst, also davor. Allerdings halt nur mit dem letzten, da *konto nach durchlaufen der Schleife nur noch auf dieses zeigt. Das liesse sich aber leicht mit nem Array aus Pointern auf Konto(s) lösen.

    int main()
    {
        ostringstream os; 
        Konto *konto[10000];
    
        for (int i=0; i<10000; ++i) 
        { 
            os.str("");
            os << "Name" << i; 
            konto[i] = new Konto(os.str(), 0.00f, 200.00f);
            Reiffeisen->konto_Hinzufuegen(*konto[i]); 
        }
    
        //um z.B. das erste erstellte Konto anzuzeigen
        *konto[0]->display();
    }
    


  • hi attix!!
    danke für deine hilfe:
    die zeilen mag er net:

    Reiffeisen->konto_Hinzufuegen(*konto[i]);
    error C2664: 'konto_Hinzufuegen' : Konvertierung des Parameters 1 von 'class Konto' in 'class Konto *' nicht moeglich

    ich würde mal sagn das soll so heissen!!???????????:
    Reiffeisen->konto_Hinzufuegen(konto[i]);

    *konto[0]->display();
    error C2100: Zeigeroperation ungueltig

    wie wird das sonst gemacht?? wenn man 100 objekte erstellen muss, zum test! macht man das a mit pointern oder ohne??

    cu



  • muss ich dann die ganzen pointer auf die instanzen wieder löschen???
    so wie da mach ich es so:

    Konto *giro = new Konto("Gerald", 0.00f, 200.00f);
    delete giro;
    

    cu



  • hi, ich hab das nun in den konstruktor von der bank gegeben:

    Bank::Bank(unsigned int blz):bankleitzahl(blz)
    {
        ostringstream os;
    
        // Array aus Pointern auf Konto(s)
        Konto *konto[1000]; 
    
        for (int i=0; i<1000; ++i) 
        { 
            os.str(""); 
            os << "Name" << i; 
            konto[i] = new Konto(os.str(), 0.00f, 200.00f); 
            konto_Hinzufuegen(konto[i]); 
        }
    }
    
    damit ich das so in der main verwenden kann:
    int main()
    {
    	// Instanz der Klasse Bank erzeugen
    	Bank *Reiffeisen = new Bank(9241);
    
             konto[0]->display();
    

    muss ich ja Array aus Pointern auf Konto(s) zurückgeben vom konstruktor oder wie????

    cu



  • Konstruktoren können keinen Rückgabewert haben, glaub ich.
    Aber du kannst zB sowas hier machen:

    class Bank
    {
    public:
        Bank();
        ~Bank();
    
        Konto** GetKonten();     // Gibt Array aus Zeigern auf Konten zurück
    
    private:
        Konto m_Konten*[1000];
    }
    
    // Im Konstrktor dann in m_Konten speichern, anstatt ne lokale Variable zurückzugeben.
    
    Konot** Bank::GetKonten()
    {
        return m_Konten;
    }
    

    Oder du gibst einen Const-Zeiger auf deinen vector zurück. Dann kann man an dem ncihts verändern, aber auf die Konten zugreifen.

    Mir ist noch was aufgefallen: In Konot_Hinzufügen ist ein kleiner Fehler. Wenn die Kontonummer schon existiert, wird keine neue gesucht, sondern einfach die Funktion verlassen, ohne dass das Konto hinzugefügt wurde 😉



  • Konto m_Konten*[1000]; 
    
    meinst du nicht:
    Konto *m_Konten[1000]; 
    
    mein konstruktor schau so aus:
    
    Bank::Bank(unsigned int blz):bankleitzahl(blz)
    {
       ostringstream os;
    
        for (int i=0; i<100; ++i) 
        { 
            os.str(""); 
            os << "Name" << i; 
            m_Konten[i] = new Konto(os.str(), 0.00f, 200.00f); 
            konto_Hinzufuegen(m_Konten[i]); 
        }
    }
    
    dann einfach in der int main so aufrufen:
    Reiffeisen.GetKonten(); ?????
    
    wie kann ich dann auf die konten zugreifen???
    


  • hm... kann sein, wenns so kompiliert 🙂 es soll jedenfalls ein Array aus Zeigern auf Konten sein, und kein Zeiger auf ein Array aus 1000 Konten.

    in main kannst du das dann so machen:

    Konto** konten = Bank.GetKonten();
    
    konten[1]->Machwas();
    


  • @maxi:
    schau mal dir an obs so passt:
    hast gepostet dort:
    http://www.rafb.net/paste/results/LQtesl82.html

    cu


Anmelden zum Antworten