Newsgroup: it.comp.lang.c++
Titolo: attributo static

Ciao, sto studiando il C++ sul libro del Lippman ed ho il seguente
dubbio:
ho creato una classe A e all'interno di questa ho creato una struttura,
chiamata _base.
Ora in un altro modulo ho dichiarato una variabile di tipo A e vorrei
che quando questa variabile va a modificare la struttura _base, vada a
modificare non la sua copia, bensi' quella originale, cioe' quella di
A...
Ho studiato l'attributo static e quindi ho pensato di dichiarare quella
struttura con il qualificatore static, cosi' ogni volta che dichiaro in
qualche modulo una variabile di tipo A, vado a modificare la struttura
originaria.
Pero' ho pensato: se dichiaro, dentro la classe, un puntatore a questa
struttura ( es. struct _base* ptBase), ottengo lo stesso risultato???
Ho pensato, un puntatore, non e' altro che un indirizzo, e se quindi
questo lo faccio puntare a una struttura ( che non e' static ), questo
indirizzo sara' comune a tutti, e dove punta questo indirizzo??? alla
struttura, quindi ho pensato che dichiarare static la struttura o
dichiarare static un suo puntatore e' la stessa cosa!!!
e' giusto???
ancora non l'ho provato, ma volevo pero' sapere se e' comunque corretto
programmare in questo modo o forse era meglio dichiarare come static la
struttura e non un suo puntatore.
ciao e grazie in anticipo!!!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 e' giusto???
qundi la mia risposta è no, usa static!
ciao

 struttura e non un suo puntatore.
Se la struttura è piccola può essere essa stessa il membro statico
altrimenti è meglio che lo sia solo un puntatore ad essa.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 > dichiarare static un suo puntatore e' la stessa cosa!!!
E questa frase sembra indicare quanto dicevo sopra.


 dinamicamnete??? nel distruttore???
No, altrimenti il primo oggetto che va fuori di scope rilascerebbe la
memoria puntata dal membro static. Meglio farlo alla fine del programma.
Comunque tutto questo non mi pare abbia molto senso.


 puntatore alla struttura...
Guarda, ti faccio direttamente un semplice esempio cosě vediamo se ho
capito cosa intendi:
#include <iostream>
class MiaClasse
{
    public:
        struct cbBase
        {
            unsigned int nAlfa;
        };
        static cbBase *ptr;
};
MiaClasse::cbBase *MiaClasse::ptr = new MiaClasse::cbBase;
int main()
{
    MiaClasse mc1;
    MiaClasse mc2;
    mc1.ptr -> nAlfa = 1234;
    std::cout << mc2.ptr -> nAlfa << '\n';
    delete MiaClasse::ptr;
    return 0;


 > > dichiarare static un suo puntatore e' la stessa cosa!!!
hai proprio ragione ma quel struct _base* ptBase mi aveva proprio fuorviato.
credevo che non avesse dichiarato static il puntatore...
così il discorso cambia e dichiarare static la struttura o il puntatore sono
proprio la stessa cosa.
Tra l'altro l'uso di un puntatore static è alla base della implementazione
del pattern singleton (nel costruttore della classe si allocherà la memoria
per contenere la struttura...)
chiedo scusa per la gaffe...
P.S daniele la prossima volta devi essere un po più chiaro così evito queste
figuracce ;-)

 software..."
Questa è l'informatica in generale, non il C in particolare.
