Oppure

Loading
02/10/10 15:59
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:

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: computing.net/answers/programming/static-arrays-cc/…
Ultima modifica effettuata da 02/10/10 16:00
02/10/10 16:14
pierotofy
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: piero.dev
02/10/10 16:58
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 02/10/10 16:59
04/10/10 2:14
TheKaneB
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).
aaa
04/10/10 13:41
grazie della risposta...ormai non ci speravo più che rispondesse qualcuno xD!