Est-il possible d'implémenter un modèle singleton dans MQL4 ? - page 7

 
ALXIMIKS:

pourquoi faire quelque chose ? créer un objet global de classe et c'est tout. (oy-yo-yo-yo - structures, puis vous comprendrez quelque chose de votre côté et attaquerez à nouveau)

Et vous pouvez également écrire "tout en un" en contournant les classes et les structures. Même en matière de procédure. Ecris comme tu veux, qu'est-ce que tu veux de moi ?

Essayez d'enseigner à Straustrup un peu plus. Écrivez-lui une lettre disant qu'il a inventé beaucoup de choses inutiles. Chacun choisit le sien, et chacun écrit comme il l'entend. Je me sens à l'aise pour écrire lorsque tout est divisé en fonction de certaines tâches. Distribuer tout et appeler ça un travail. Mais lorsque ces morceaux de code se transforment en "boîte noire", c'est très pratique. Surtout quand il n'y a pas beaucoup d'extra comme vous le dites :

ALXIMIKS:

4) peut-être un gros tas de données, mais c'est une question pour les développeurs.

D'ailleurs, les développeurs n'ont rien à voir avec cela. Ce n'est pas la question.

Mais j'attends ma question. Je me demande pourquoi il y a une telle différence alors qu'il n'y en a pas selon la documentation...

 
hoz:
Pourquoi cela n'est-il pas fait pour les classes selon la documentation ? Pourquoi prend-il et initialise-t-il chaque membre par classe ?

encore une fois zorowo. :)

Que voulez-vous que nous fassions ?

 
_new-rena:
Lire et espérer une capture d'écran du motif ( ?).... pour une collection...

Désolé, il y a une programmation "célibataires" en cours... parti.
 

l'aide est un peu ringarde cependant, car je ne comprends toujours pas la phrase

Le faitde ne pas pouvoir déclarer les membres de la classe de manière statique nécessiterait de déclarer ces donnéesde manière globale dans le programme.

qui l'ont compris, veuillez expliquer ce que cela signifie ?

 
keekkenen:

qui comprennent, dites-moi ce qu'ils essaient de dire ?

c'est pour promouvoir la coolitude de mql.

ne vous embêtez pas avec la formulation.

 
keekkenen:

Lefait de ne pas pouvoir déclarer les membres de la classe de manière statique entraînerait la nécessité de déclarer ces donnéesde manière globale dans le programme.

qui comprennent, expliquez ce que vous entendez par là ?


Au lieu de :

class CClass
{
   static int m_a;
};

Il suffirait de l'utiliser :

int g_a;

Et dans le premier cas, m_a n'est disponible que dans les instances de la classe CClass, et dans le second, depuis n'importe quelle partie du programme.

 
Scriptong:


Au lieu de :

devrait être utilisé uniquement :

Et dans le premier cas, m_a n'est disponible que dans les instances de la classe CClass, alors que dans le second, il est disponible depuis n'importe quelle partie du programme.


Je ne vois pas d'avantage/différence entre

class CClass
{
   static int m_a;
};

Avant

class CClass
{
   public:
    int m_a;
};

ce n'est pas la formulation qui est importante, mais le sens qu'on lui donne !

 
keekkenen:

Je ne vois pas d'avantage/de différence entre

Le premier est l'équivalent d'un nimespace.
 
keekkenen:


Je ne vois pas d'avantage/de différence entre

Nous parlions des membres statiques de la classe. De plus, dans mon exemple, m_a est un membre privé. Et ces membres de classe ne sont accessibles qu'à partir des instances de la classe. Ainsi, la valeur de la variable ne peut être modifiée nulle part dans le code, sauf sur les instances de la classe. Il s'agit d'écrire un code sûr qui élimine un grand nombre de bogues futurs possibles.
 

Quelqu'un a crié à propos de 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();
}

Est-il prévu d'étendre les modèles aux classes et au paramétrage explicite ? Sinon, il me blâme et me dit que je veux trop.

P.S., il serait plus correct de déclarer laclasse SomeClass à l'intérieur deSingleton (dans ce cas, vousnepouvez créerqu'une seule instance deSomeClass), mais c'est plus évident, bien que pas correct.