|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: May 2003
Messaggi: 283
|
static C++ VS static Java
Avrei bisogno di realizzare il static del tipo Java in C++, cioè ho un vettore che voglio sia utilizzato da tutti gli oggetti di quella classe. Putroppo in C++ la dichiarazione del vettore non corrisponde alla sua definizione e quindi dovrei eseguire questo passaggio nel main (per es.) ma c'è la possibilità che la classe faccia sia la dichiarazione che la definizione internamente quando per es. viene istanziato il primo oggetto di quella classe senza dover intervenire "esternamente"????
Spero di aver spiegato bene il problema.
__________________
/*** * Nulla è impossibile per chi non deve farlo ***/ |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Così ti può andare bene ?
Codice:
#include <vector>
using namespace std;
class TuaClasse {
static bool init;
static vector<int> vett;
void Init();
public:
TuaClasse();
};
bool TuaClasse::init = false;
void TuaClasse::Init()
{
if(init) return; //se è già inizializzato esci
//a questo punto qui fai l'inzializzazione del vettore
}
TuaClasse::TuaClasse()
{
Init();
//e qui fai le altre cose del costruttore
}
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: May 2003
Messaggi: 283
|
Il tuo discorso è chiaro però se posso fare come dici tu allora posso fare direttamente
int TuaClasse::vettore[DIM]; che poi è quello che mi interessa, ma non riesco a capire quando viene eseguita quella istruzione e ovviamente se viene eseguita una volta soltanto? Io ho bisogno di un vettore da condividere con tutti gli oggetti della classe PUNTO (non devo ne inizializzarlo ne niente).
__________________
/*** * Nulla è impossibile per chi non deve farlo ***/ |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Re: static C++ VS static Java
Quote:
Codice:
class A
{
private:
class AImpl
{
public:
static vector<int>& GetVector()
{
static vector<int> mStaticVector;
return mStaticVector;
}
};
public:
void UseVector()
{
vector<int>& static_vector = AImpl::GetVector();
// usalo qui
}
};
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:14.



















