Visualizzazione dei risultati da 1 a 10 su 14

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84

    [C++] std::vector problema funzione virtual, polimorfismo.

    Buongiorno

    Ho un vector:
    codice:
    extern std::vector<Poligono> poligoni;
    Tre classi figlie di Poligono che contengono la funzione calcolaArea();
    In poligono.h quindi:
    codice:
    virtual double calcolaArea(){return 0.0;}
    Inoltre ho un'altra funzione in cui vorrei riempirmi un array chiamato aree con tutte le aree dei miei poligoni quindi:
    codice:
    for(int i=0; i<poligoni.size();i++)
    {
    double a=poligoni[i].calcolaArea();
    aree[i]=a;
    }
    Compila ma le aree dei miei poligoni risultano tutte 0. In fase di debug noto che non entra per niente nella funzione calcolaArea() (mettendo un breakpoint le linee in questione sono verdi)

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Manca una informazione ... come hai istanziato gli elementi di p[] ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Manca una informazione ... come hai istanziato gli elementi di p[] ?
    codice:
    extern Poligono p;
    la funzione di inserimento l'ho cosi implementata:
    codice:
    AnsiString n = Edit1->Text;
    p.setNome(n.c_cstr());
    p.setTipo(RadioGroup->ItemIndex);
    p.setNumLati(p.getTipo());
    if(!p.getArrayLati())
    p.setArray((double)calloc(p.getNumLati(),sizeof(double)));
    
    for(int i=0;i<p.getNumLati(); i++)
    {
    AnsiString s=Memo1->Lines->Strings[i];
    p.riempiArrayLati(s.ToDouble(), i);
    }
    
    poligoni.push_back(p);

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Volevo scrivere gli elementi di poligoni [] ... gli elementi del vector ... come li hai istanziati ? Di che classe sono?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Volevo scrivere gli elementi di poligoni [] ... gli elementi del vector ... come li hai istanziati ? Di che classe sono?
    oltre fare extern std::vector<Poligono>poligoni; non faccio altro. Tu intendi col new? Ma dove?
    Non mi sgridare per favore
    Ultima modifica di user1989; 22-07-2016 a 14:32

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non si tratta di "sgridare" nessuno, ma se ti dico di studiare i vector e mi rispondi che li conosci, non puoi fare certe domande ...

    Comunque, dai un'occhiata a queste righe d'esempio da cui prendere spunto ...

    codice:
    	vector<Poligono *> poligoni;
     
    	Triangolo *t = new Triangolo();
    	
    	poligoni.push_back(t);
     
    	for(unsigned int i=0; i<poligoni.size();i++)
    	{
    		double a=poligoni[i]->calcolaArea();
    		cout << a << endl;
    	}
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.