Erreurs, bugs, questions - page 1981

 
Alexey Navoykov:
Hmm, nous devons donc nous pencher sur les normes de langage et voir quel compilateur se trompe.
La deuxième option est similaire

#ifdef __BORLANDC__
class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return b->i; } //Error: E224
#endif

VS 2010 échoue parce qu'il surmonte le privé par une conversion implicite de B* en A*.


#ifdef __BORLANDC__

class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return ((A *)b)->i; } //нормально

#endif

 
Alexey Navoykov:
Hmm, nous devons donc nous pencher sur les normes du langage et voir quel compilateur se trompe.
gcc 7.2 compile la dernière version, vérifiée ici
Compiler Explorer - C++
  • About the author
  • godbolt.org
These settings control how Compiler Explorer acts for you. They are not preserved as part of shared URLs, and are persisted locally using browser local storage.
 
Комбинатор:
gcc 7.2 compile la dernière version, vérifiée ici

Le résultat est le tableau suivant

class B;
class A {                                       //MQL //BCC //VS2010 //gcc
        int f1( B *b ) { return       b .i;   } // -     -     +        +
        int f2( B *b ) { return       b .g(); } // +     -     +        +
        int f3( B *b ) { return ((A *)b).i;   } // +     +     +        +
        int f4( B *b ) { return ((A *)b).g(); } // +     +     +        +
        int f5()       { return       b .i;   } // -     -     +        +
        int f6()       { return       b .g(); } // +     -     +        +
        int f7()       { return ((A *)b).i;   } // +     +     +        +
        int f8()       { return ((A *)b).g(); } // +     +     +        +
//---
        int g() { return 0; }
        int i;
        B *b;
};
class B : public A {};

Et msdn dit : Le contrôle d'accès permet d'éviter que les objets soient utilisés à des fins non autorisées. Cette protection est perdue lors de l'exécution de conversions de type explicites(conversions de type).
 

Bonjour à tous.

Pouvez-vous me dire s'il existe un moyen de supprimer la fenêtre de l'indicateur qui apparaît dans le testeur de stratégie lorsque la visualisation est activée ?

Il est généré par wizarda dans MT5.

J'ai lu dans la documentation de MQL5 que IndicatoRelease ne fonctionne pas dans Strategy Tester. (J'ai essayé d'insérer cette fonction dans OnDeinit de toute façon, il commence à se plaindre qu'un handle n'est pas déclaré. Je la déclare, elle génère d'autres erreurs).

Y a-t-il un autre moyen ?

 
Ahmet Garyagdyyev:

Bonjour à tous.

Pouvez-vous me dire s'il existe un moyen de supprimer la fenêtre de l'indicateur qui apparaît dans le testeur de stratégie lorsque la visualisation est activée ?

Il est généré par wizarda dans MT5.

J'ai lu dans la documentation de MQL5 que IndicatoRelease ne fonctionne pas dans Strategy Tester. (J'ai essayé d'insérer cette fonction dans OnDeinit de toute façon, il commence à se plaindre qu'un handle n'est pas déclaré. Je la déclare, elle génère d'autres erreurs).

Y a-t-il un autre moyen ?


Vous pouvez changer le modèle avec tous les indicateurs, pour n'importe lequel de ceux que vous avez enregistrés précédemment.

 
A100:

Le résultat est le tableau suivant

VS et gcc ont longtemps été considérés comme la référence* (ou du moins largement moins sujets aux bogues) que Borland. J'ai moi-même utilisé Borland pendant de nombreuses années, mais en fonction de ses autres avantages.

PS. *Ce n'est pas mon opinion personnelle, je n'en discuterai pas.

 

Chers collègues, quelqu'un a-t-il déjà tenté d'implémenter une bibliothèque STL en c++ (en tenant compte des capacités du langage) ? De préférence avec le placement de la base de données, la recherche dit non, mais vrdug ... . Certainement pas tout, mais quelques trucs de base : quelques conteneurs normaux via des templates, et cet auto_ptr (j'ai certainement écrit le mien, mais écrire soi-même de telles primitives est idiot).
Je ne comprends pas pourquoi std µl n'est pas un modèle et pourquoi nous avons dû inventer de nouveaux noms pour les méthodes/classes analogues dans STL.

 

J'ai trouvé une erreur, je ne vais pas insérer le texte compilé complètement, je vais tirer des morceaux du script :

class Source : public CObject
{
public:
   upindex_t start, top, lstart, ltop;
};

CArrayObj sourcear;

do
{
   Source *new_src = new Source;
   new_src.start = last.start;
   new_src.top = last.top;
   new_src.lstart = prev_prev.start;
   new_src.ltop = prev_prev.top;
   if( ! sourcear.Add(new_src) )
      return;
}
while(...);

for(int i = 0;  i < sourcear.Total();  ++ i)
{
   Source cursrc = (Source*)sourcear.At(i);  //!!!!! Это не вызывает ошибки во время компиляции
}

C'est-à-dire, cast : CObject*--> Source* --> Source

Ou s'agit-il d'une sorte de MQL spécifique et délicat ?


ZS : et une telle chaîne est mangée :

Source new_src = new Source;

C'est absurde. Pas de copie de cons/opérateurs dans le langage, je ne l'ai pas déréférencé. Qu'est-ce qui se passe ici ?

 
pavlick_:

Ou s'agit-il d'un MQL spécifique et délicat ?

class A {};

void OnStart()
{
  A a = new A;
}

L'opérateur de copie par défaut est déclenché.

 
fxsaber:

L'opérateur de copie par défaut est déclenché.

Si ce n'est pas difficile, où puis-je le lire ?