Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Array statici
Forum - C/C++ - Array statici

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
In una parte della mia applicazione avevo bisogno di inzializzare un vettore di elementi statici, affinchè essendo in un iterazione di una funzione non venissero re-inizializzati ogni volta.
Allora finchè la variabile statica non è un array funziona tutto, ma se provo cosi:

Codice sorgente - presumibilmente C/C++

  1. static int arr[<numero_constante>]



non funziona. Ad ogni ciclo si re-inizializza tutto.
Sapreste indicarmi il problema?

P.S cercando su google ho trovato solo questo di utile ma, sinceramente, non ci ho capito molto :rotfl: http://www.computing.net/answers/programming/static-arrays ...

Ultima modifica effettuata da il 02/10/2010 alle 18:00
PM
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Up
2
Down
V
Segnala al moderatore
Postato alle 18:14
Sabato, 02/10/2010
Quando dichiari un array, a tutti gli effetti dichiari un puntatore. Se definisci un puntatore static, l'unica cosa che ti assicuri è che esso manterrà il suo indirizzo invariato tra più chiamate a funzione. Gli elementi invece verranno trattati normalmente.

Ma cos'è che devi fare?


Il mio blog: https://piero.dev
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 18:58
Sabato, 02/10/2010
sto creando un motore fisico 2D,e l'array statico mi serviva per mantenere la coordinata di un punto e verificarla con quella nuova per decidere se un corpo è in movimento :asd:

comunque grazie della risposta!

Ultima modifica effettuata da il 02/10/2010 alle 18:59
PM
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 4:14
Lunedì, 04/10/2010
Testo quotato

Postato originariamente da carlduke:

sto creando un motore fisico 2D,e l'array statico mi serviva per mantenere la coordinata di un punto e verificarla con quella nuova per decidere se un corpo è in movimento :asd:

comunque grazie della risposta!



pessima tecnica.

Crea una classe che rappresenta l'entità del punto. Nella classe ti basta inserire, oltre alle coordinate correnti, un std::vector< std::pair< float, float > > che contenga un certo numero di coordinate "passate" (utile per calcoli avanzati di predizione del moto).

Se non ti serve tutta questa sofisticazione, puoi semplicemente mantenere una singola coppia di coordinate, quelle del frame precedente, ma sempre all'interno della classe.

In questo modo avrai, m_position e m_oldPosition, che sono due membri della stessa classe. Basta un banale if ( m_oldPosition != m_position ) per determinare se la posizione è cambiata, supponendo che tu stia usando lo std::pair come template class per le coordinate spaziali 2D.

L'ideale sarebbe fare una classe apposta per i vettori 2D con tanto di overloading degli operatori artitmetici per le operazioni vettoriali più comuni (utile nell'engine fisico).

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 15:41
Lunedì, 04/10/2010
grazie della risposta...ormai non ci speravo più che rispondesse qualcuno xD!

PM
Usa i commenti per chiedere spiegazioni o ringraziare le risposte.