Erreurs, bugs, questions - page 1133

 
Fleder:

Il le dira :

Vous pouvez également créer un objet si vous avez besoin de

class B {
        B( int ii ) : i( ii ) {}
        int i;
public:
        int g() { return ( i ); }
        static B *f( int ii ) { return ( new B( ii ) ); } 
};
void OnStart()
{
        B *b = B::f( 100 );
        Print( b.g());
}
 
Zeleniy:

Je ne comprends pas comment scanner les serveurs lors de la connexion ? Auparavant, j'entrais le nom du serveur et la liste apparaissait, j'ajoutais le nécessaire (image 2, il y a des serveurs ajoutés il y a une quinzaine de jours) Dans l'image 1, on ne scanne plus les serveurs nécessaires, je ne peux pas ajouter. Qu'est-ce qui n'est plus possible ou comment le faire soi-même ?


Vous devez utiliser une partie du nom de la société mais pas une partie du nom du serveur. La recherche par nom de serveur ne fonctionne plus car elle donnait souvent des listes de correspondances trop importantes et ne correspondait pas du tout à ce que le commerçant voulait.

 
Lone_Irbis:

Oui, et il est préférable de ne pas utiliser le forex du tout non plus. Ou l'ordinateur, d'ailleurs :) Ce n'est pas sain du tout.

De toute façon, il y a déjà un correctif. Ce n'est pas très joli, mais ça marche. Le correctif s'appelle "To hell with your OOP". %) Les erreurs ont été éliminées en sciant toutes les variables statiques des classes, en supprimant le préfixe static de celles-ci et en les empilant soigneusement les unes à côté des autres.

En général, je ne sais pas pourquoi les développeurs n'aimaient pas les variables statiques et pourquoi ils ont dû supprimer la fonction d'initialisation automatique des variables, mais si je dois le faire, je dois le faire. Je vais devoir recourir à des solutions de rechange...

C'est aussi comme ça que ça marche en C++. Les variables statiques doivent être définies de manière explicite.

Il n'y a aucun problème.

 
A100:


Je comprends votre point de vue.

Si une instance d'une classe tente d'être créée par un programme externe, le constructeur doit être ouvert.

Si l'instance "se crée elle-même" (et transmet un pointeur vers elle à un programme externe), un constructeur fermé est disponible.

 
Renat:

C'est aussi la façon dont cela fonctionne en C++. Les variables statiques doivent être définies explicitement.

Il n'y a aucun problème.

La question n'est pas tant de savoir où et comment cela fonctionne et s'il y aura des problèmes avec cela. Le fait est que cela fonctionnait bien auparavant sans être explicitement spécifié.

Et pour changer quelque chose qui fonctionne déjà, il faut avoir une raison bien plus importante que "les voisins le font aussi". :)

Mais allez, je suppose, bien sûr, que ce n'est pas la seule raison.

 

L'intérêt d'un constructeur privé unique est seulement de limiter la création de classes dérivées. Alternativement, une classe peut avoir plusieurs constructeurs.

class A {
private:
        A( int ) {}
public:
        A( int, int ) {}
};
class B : public A {
        B() : A( 0, 0 ) {}
};

 
Lone_Irbis:

La question n'est pas tant de savoir où et comment cela fonctionne et si cela va poser un problème. La question est que cela a bien fonctionné auparavant sans que cela soit explicitement indiqué.

Et pour changer quelque chose qui fonctionne déjà, il est conseillé d'avoir des raisons plus importantes que "les voisins le font aussi". :)

Mais allez, je suppose, bien sûr, que ce n'est pas la seule raison.

Et vous essayez d'initialiser les variables statiques dans la liste d'initialisation du constructeur.
 
A100:

L'intérêt du constructeur privé unique est uniquement de limiter la création de classes dérivées. Une classe peut également avoir plus d'un constructeur.

Après tout, vous êtes votre propre développeur de code et de telles restrictions n'ont guère de sens.
 

Est-ce que tout le monde a le même problème avec les boutons de la fenêtre MQL-Storage Fix ?

Il y a un problème avec les boutons...

 

Échec du chargement de l'EX5 (930\32)

class C;
class B {
public:
        virtual void f( C* c ) {}
};
#import "file.ex5"
        int Trade( const MqlTradeResult& request );
#import
class A {};
void OnStart()
{
        A a;
}
Si vous supprimez toute ligne supplémentaire (ou même un mot, par exemple virtual, ou const MqlTradeResult& remplacé par int, ou l'importation entière est exclue) - tout va bien.
Raison: