Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152

    [c++] Problema con classe derivata

    Salve a tutti. Ho un problema.
    Ho una classe base con un costruttore e un metodo public:

    BASE_class(){
    .....
    .....
    .....
    }


    BASE_class *Molt(BASE_class *pM, double a){....
    .....
    .....
    }


    Non entrando nel merito dei membri di entrambi , dico solo che Molt effettua una moltiplicazione di una matrice per un double.
    Cmq basta sapere che se faccio nel main():

    main(){
    BASE_class *prova = new BASE_class();
    prova->Molt(prova,2.3);
    }
    FUNZIONA.

    Il problema è che ho una classe derivata:

    class deriv_class : public BASE_class{

    private:
    BASE_class *pm_x;
    BASE_class *pm_ris;

    public:
    deriv_class(char *strx)
    {
    BASE_class *pm_x = new BASE_class(strx); //prende da un file i valori
    }
    void ese(double d){
    pm_ris = pm_x->Molt(pm_x,d);
    delete pm_ris;
    }

    nel Main()
    deriv_class *pvUTM = new deriv_class("stinga.txt");
    pvUTM->ese(2);
    delete pvUTM;

    IL COMPILATORE NON MI DA ERRORI MA ESEGUENDO IL FILE EXE MI DA SEGMENTATION FAULT!!!!
    PERCHE???
    andry80

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    Correzione al post precedente.

    Ho eliminato il delete pm_ris nel metodo ese, e aggiunto un distruttore nella classe derivata.
    ~deriv_class (){
    delete pm_x;
    }

    Cmq il problema resta.
    andry80

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    qual è il corpo del metodo

    BASE_class *Molt(BASE_class *pM, double a){....
    .....
    .....
    }

    ?

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    BASE_class *Molt(BASE_class *pbcA, double dB)
    {
    BASE_class *pRis = new BASE_class(
    pbcA->col,
    pbcA->rig);

    int nC = pris->col * pris->rig;
    double val;
    double dA;

    for (int i=0;i<nC;i++)
    {
    dA = pbcA->Get(i); ritorna un valore
    val = dA * dB;
    pris->Set(i,val); imposta il valore vai nell' elemento i dell'array.
    }
    return pris;
    }
    andry80

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 © 2025 vBulletin Solutions, Inc. All rights reserved.