È possibile implementare un modello singleton in MQL4. - pagina 7

 
ALXIMIKS:

Perché fare qualcosa? Creare un oggetto globale di classe e basta. (oy-yo-yo-yo - strutture, poi capirai qualcosa di tuo e attaccherai di nuovo)

E si può anche scrivere "tutto in uno" bypassando classi e strutture. Anche nella procedura. Scrivi come vuoi, cosa vuoi da me?

Cerca di insegnare ancora un po' a Straustrup. Scrivigli una lettera dicendo che si è inventato un sacco di cose inutili. Ognuno sceglie il suo, e ognuno scrive come vuole. Mi sento a mio agio a scrivere quando tutto è diviso secondo certi compiti. Distribuire tutto e chiamarlo un'opera. Ma quando questi pezzi di codice si trasformano in una "scatola nera" è molto comodo. Soprattutto quando non c'è molto extra, come dici tu:

ALXIMIKS:

4) forse un gran mucchio di dati, ma è una domanda per gli sviluppatori.

A proposito, gli sviluppatori non hanno nulla a che fare con questo. Non è questo il punto.

Sto aspettando la mia domanda, però. Mi chiedo perché ci sia una tale differenza quando non c'è secondo la documentazione...

 
hoz:
Perché questo non viene fatto per le classi secondo la documentazione? Perché tira fuori e inizializza ogni membro per classe?

di nuovo zorowo. :)

Cosa vuoi che facciamo?

 
_new-rena:
Leggendo e sperando in uno screenshot del modello (?).... per una collezione...

Scusate, c'è una programmazione per "single" in corso... sparito.
 

l'aiuto è un po' smielato però, perché ancora non capisco la frase

Non essere in grado di dichiarare staticamente i membri della classe richiederebbe di dichiarare questi datiglobalmente nel programma.

chi l'ha capito, mi spieghi cosa intendeva dire?

 
keekkenen:

che capiscono, ditemi cosa stanno cercando di dire?

è per promuovere la figaggine di mql.

Non preoccupatevi della formulazione.

 
keekkenen:

Non essere in grado di dichiarare staticamente i membri della classe comporterebbe la necessità di dichiarare questi datiglobalmente nel programma.

che capiscono, spiegate cosa intendete con questo?


Invece di:

class CClass
{
   static int m_a;
};

dovrebbe solo essere usato:

int g_a;

E nel primo caso, m_a è disponibile solo nelle istanze della classe CClass, e nel secondo, da qualsiasi parte del programma.

 
Scriptong:


Invece di:

dovrebbe essere usato solo:

E nel primo caso, m_a è disponibile solo nelle istanze della classe CC, mentre nel secondo, è disponibile da qualsiasi parte del programma.


Non vedo un vantaggio/differenza tra

class CClass
{
   static int m_a;
};

Prima di

class CClass
{
   public:
    int m_a;
};

non è la formulazione, ma ciò che si intende con essa?!

 
keekkenen:

Non vedo un vantaggio/differenza tra

Il primo è l'equivalente di un nimespace.
 
keekkenen:


Non vedo un vantaggio/differenza tra

Stavamo parlando di membri statici della classe. Inoltre, nel mio esempio m_a è un membro privato. E tali membri di classe sono accessibili solo dalle istanze di classe. Quindi, il valore della variabile non può essere cambiato da nessuna parte nel codice, tranne che sulle istanze della classe. Si tratta di scrivere codice sicuro che elimina molti possibili bug futuri.
 

Qualcuno stava urlando sul singleton

class SomeClass{
public:
   int a;
};

class Singleton{
protected:
        static SomeClass* _self;
        Singleton(){}
        virtual ~Singleton(){}   
public:
        static SomeClass* Instance(){
                if(_self == NULL){
                        _self = new SomeClass();
                }
                return _self;
        } 
        static void DeleteInstance(){
                        delete _self;
        }
};
 
SomeClass* Singleton ::_self = NULL;

void OnStart()
{       
        SomeClass* some_ptr = Singleton::Instance();
        Alert(some_ptr.a);                              // Alert(Singleton::Instance().a); // або просто так
        Singleton::DeleteInstance();
}

Ci sono piani per estendere i modelli alle classi e all'impostazione esplicita dei parametri? Altrimenti mi incolpa e mi dice che voglio troppo.

P.S., sarebbe più corretto dichiarare laclasse SomeClass dentroSingleton (in questo caso sipuò crearesolo un'istanza diSomeClass), ma è più ovvio, anche se non corretto.

Motivazione: