Inizializzare valori di array

di il
11 risposte

Inizializzare valori di array

Buongiorno a tutti. Ho una classe in cui è presente un array di tipo int [238]. Quando vado a richiamare i valori dentro l'array mi dice "Impossibile valutare l'espressione", senza errori di compilazione. quindi ho provato a mettere qualcosa del genere nel costruttore della classe:
for (int i=0; i<sizeof(arrayInt); i++) {
    arrayInt[i]=0;
}
, ma purtroppo continua a non funzionare... come faccio ad impostare tutti i valori dell'array a 0?

11 Risposte

  • Re: Inizializzare valori di array

    
    memset(arrayInt,0,238);
    
    Perche ti complichi la vita?
    preso da wikipedia
    
    
    #define Elements_in(arrayname) (sizeof arrayname/sizeof *arrayname)
     
    int main( void )
    {
       int tab[10];
       cout << "Number of elements in the array: " << Elements_in(tab) << endl; // yields 10
       return 0;
    }
    
  • Re: Inizializzare valori di array

    Niente..... mi da lo stesso errore.....
  • Re: Inizializzare valori di array

    Ora ho provato anche con map e vector, ma mi da errore di iterazione...
  • Re: Inizializzare valori di array

    Ma stai facendo il debug di un app compilato in release?
  • Re: Inizializzare valori di array

    Puoi postare un esempio completo?
  • Re: Inizializzare valori di array

    Rispettivamente:
    No, lo sto compilando in debug
    Si (è la parte che mi da errore, cmq è per un gioco in Ogre):
    class KeyboardEvents
    {
    private:
    	int keyEv[];
    public:
    	KeyboardEvents(){
    		for (int i=0; i<=237; i++){
    			keyEv[i]=0;
    		}
    	};
    
    	int getStatus(int code){
    		return keyEv[code];
    	};
    	
    	void injectKeyDown(const OIS::KeyEvent &arg){
    		keyEv[(int) arg.key]=1;
    	};
    	void injectKeyUp(const OIS::KeyEvent &arg){
    		keyEv[(int) arg.key]=3;
    	};
    
    	void update(){
    		for (int i=0; i<=237; i++){
    			int actual=keyEv[i];
    			if (actual==1){
    				actual=2;
    			}
    			else if (actual==3){
    				actual=0;
    			}
    		}
    		return;
    	};
    };
    che poi la funzione update viene richiamata ogni frame , la funzione injectKeyDown quando viene premuto un tasto e injectKeyDown quando viene rilasciato.
    Mi da errore in update con "keyEv" perchè dice che è impossibile valutare l'espressione....
  • Re: Inizializzare valori di array

    
    int keyEv[];
    
    equivale a
    
    int *keyEv;
    
    ed e' quindi solo un puntatore, da cui l'errore perche keyEv non esiste in quanto la variabile keyEv non punta a niente.
    Soluzione se sai la dimensione
    
    class KeyboardEvents
    {
    private:
       int keyEv[];
    public:
       KeyboardEvents(){
          keyEv = new int[238];
          memset(keyEv,0,238);
       };
    ............................
    
  • Re: Inizializzare valori di array

    error C2440: '=': impossibile convertire da 'int *' a 'int []'
  • Re: Inizializzare valori di array

    Niente, ho cambiato "int keyEv[];" in "int *keyEv;" e non mi da errori di compilazione, ma in runtime mi dice "keyEv impossibile valutare l'espressione"
  • Re: Inizializzare valori di array

    Non so cosa hai combinato con la tua classe ma a me funziona
    Piccola prova:

    file.h
    #ifndef BASE_H
    #define BASE_H
    
    class KeyboardEvents
    {
    private:
    	int *keyEv;
    public:
    	KeyboardEvents();
    	virtual ~KeyboardEvents();
    
    	int getStatus(int code){
    		return keyEv[code];
    	};
    
    	void injectKeyDown(int key){
    		keyEv[key]=1;
    	};
    	void injectKeyUp(int key){
    		keyEv[key]=3;
    	};
    
    	void update(){
    		for (int i=0; i<=237; i++){
    			int actual=keyEv[i];
    			if (actual==1){
    				actual=2;
    			}
    			else if (actual==3){
    				actual=0;
    			}
    		}
    		return;
    	};
    };
    #endif
    file.cpp
    #include "base.h"
    #include <iostream>

    KeyboardEvents::KeyboardEvents(){
    keyEv = new int[238];
    memset(keyEv,0,238);
    };

    KeyboardEvents::~KeyboardEvents()
    {
    delete [] keyEv;
    }
    main
    #include <iostream>
    #include "base.h"

    int main()
    {

    KeyboardEvents k;
    k.update();
    }
    Debug
    test.jpg
    test.jpg

  • Re: Inizializzare valori di array

    Ho capito dove sbagliavo.... invece di scrivere "KeyboardEvents k;", scrivevo "KeyboardEvents *k;".... ora non da più errore, grazie
Devi accedere o registrarti per scrivere nel forum
11 risposte