Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] errore inspiegabile in compilazione

    ciao a tutti,
    forse sto per chiedervi una cavolata, ma non riesco a capire il problema che mi pone il compilatore. il codice è questo:
    class ps_power_module
    {

    friend class sc_simcontext;
    friend class ps_configure_module;

    private:

    string module_name;

    public:

    static ps_configure_module configure;

    // The map where save a power properties of each module
    static std::map<string, ps_power_module_struct> power_module_table;

    // The object for read the configure file
    //static ps_configure_module configure;

    //static unsigned count;

    // The public constructor of the class power_module
    ps_power_module();

    // The distructor of the class
    ~ps_power_module()
    {
    };
    };
    #endif // __PS_POWER_MODULE_H
    ovviamente nel file cpp ho definito il costruttore.

    ora per utilizzare un oggetto di questa classe, dichiaro un puntatore tra le variabili pubbliche di un'altra classe(dove utilizzo il mio oggetto)

    public :
    sc_in<float> Vdd; // SYSTEMC MODIFICATION
    ps_power_module * ps_module; // SYSTEMC MODIFICATION
    e nel costruttore, contenuto nel cpp, di questa classe scrivo:
    ps_module = new ps_power_module(); //SYSTEMC MODIFICATION
    a me sembra andare tutto bene ma il compilatore(GCC) mi dice:
    ../../../../src/sysc/kernel/sc_module.h:383: error: ISO C++ forbids declaration of ‘ps_power_module’ with no type
    ../../../../src/sysc/kernel/sc_module.h:383: error: expected ‘;’ before ‘*’ token




    Perchè, perchè, perchè????????????????????????????????????

    grazie a chi mi toglierà questo dubbio...
    Marco
    warcomeb - IL LEADER O.O.O.

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Queste due classi sono dei template per caso?

    friend class sc_simcontext;
    friend class ps_configure_module;

  3. #3
    no, perchè?

    comunque potrebbe essere perchè non ho il costruttore di copie?

    Marco
    warcomeb - IL LEADER O.O.O.

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da warcomeb
    no, perchè?
    Perché quell'errore mi ha fatto subito pensare ad un template non esplicitato.
    Se una classe contiene dei template, lo diviene a sua volta.
    codice:
     static std::map<string, ps_power_module_struct> power_module_table;
    Dal frammento di codice che hai postato, l'errore potrebbe essere dovuto al fatto che hai dichiarato una variabile static, senza poi definirla fuori dalla classe.

    codice:
    class ps_power_module {
       ....
    };
    std::map<string, ps_power_module_struct> ps_power_module::power_module_table;
    comunque potrebbe essere perchè non ho il costruttore di copie?
    No. Lavori su un puntatore, non su un oggetto e il costruttore di copia lavora solo su oggetti.

  5. #5
    è vero avevo dimenticato di portar fuori la variabile static, ma acora non funziona!

    Marco
    warcomeb - IL LEADER O.O.O.

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Nemmeno ps_power_module_struct è un template, presumo.

    Commenta tutto il commentabile e vedi in quale punto smette di compilare.

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