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

    [C++] variabili statiche in due classi

    salve a tutti, dopo poche ore che abbandono un problema me se ne ripresenta uno nuovo...
    allora:

    in una classe ho una variabile statica. per qualche motivo assurdo mi trovo(anche se la variabile è statica) a doverla passare come argomento in alcune funzioni. comunque fino ad adesso ha sempre funzionato. ora mi sono trovato davanti alla necessita di doverla passare(è un puntatore la variabile statica) ad un costruttore di una classe all'interno della quale non ho definito il membro a cui l'associo statico. facendo in questo modo il tutto non funziona, ma se definisco il puntatore statico all'interno della classe e la istanzio anche nel cpp e poi nella costruzione dell'oggetto gli assegno l'altro puntatore statico il tutto funziona!!!! VVoVe: ma perchè???
    ho fatto qualche stranezza?? mmmm help me!!

    grazie


    Marco
    warcomeb - IL LEADER O.O.O.

  2. #2
    Non si capisce molto bene quello che hai scritto, in particolare
    all'interno della quale non ho definito il membro a cui l'associo statico
    . Forse è meglio se riformuli la domanda (indicando magari cosa intendi per "non funziona") e soprattutto posti il codice incriminato.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    perdonami... hai ragione non sono stato molto chiaro!!
    allora la mia prima classe è questa:
    codice:
    class ps_configure_module {
    
     public:
    
      static sc_core::sc_trace_file *tf;
    
      // The constructor of the class
      ps_configure_module(string);
    
      // The distructor of the class
      ~ps_configure_module(); 
    
    ouble> parameter;  
    };
    nel file cpp ho inserito questo:
    codice:
    sc_core::sc_trace_file * ps_configure_module::tf= sc_core::sc_create_vcd_trace_file("energy");
    ora ho la necessità all'interno del costruttore della classe di creare un altro oggetto della seguente classe:
    codice:
    class ps_for_all_parsing {
     public:
    
      std::map<string, ps_for_all_parsing>::iterator map_for_all_parsing_iterator;
    
      // utility
      string operator_type_for_all;
      string data_type_for_all;
      int model_for_all;
      vector<double> parameter_for_all;
      sc_core::sc_trace_file *tf_for_all;
    
      // constructor
      ps_for_all_parsing(string operator_type, string data_type, int model, vector<double> parameter, sc_core::sc_trace_file * tf){
    
       operator_type_for_all = operator_type;
       data_type_for_all = data_type;
       model_for_all = model;
       parameter_for_all = parameter;
       *tf_for_all = *tf;
    
      }
    
      // distructor
      ~ps_for_all_parsing(){};
    
    };
    in questo modo:
    codice:
    	 
       tmp_string2 = ( data_type + " " + operator_type);
       std::pair<string,ps_for_all_parsing> tmppairfa(tmp_string2, ps_for_all_parsing(operator_type, data_type, model, parameter, tf));
       ps_power_module::get_for_all_table().insert(tmppairfa);
    dove tf è il puntatore statico della prima classe!
    ora in questo modo in esecuzione da errore dicendo segmentation fault! se invece metto static il membro tf_for_all della seconda classe il tutto funziona... perchè?!?!?!?!!?

    grazie

    Marco
    warcomeb - IL LEADER O.O.O.

  4. #4
    nessuno mi da una mano... ????

    grazie

    Marco
    warcomeb - IL LEADER O.O.O.

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    codice:
    *tf_for_all = *tf;
    Sicuro sia questa la sintassi per assegnare un puntatore?
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    hai ragione... così assegno i contenuti degli indirizzi puntati e non i puntatori!

    la versione giusta è questa vero??
    codice:
    tf_for_all = tf;
    grazie


    Marco
    warcomeb - IL LEADER O.O.O.

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.