forked from nique_372/MQLArticles
48 lines
2.2 KiB
Markdown
48 lines
2.2 KiB
Markdown
|
|
# Bug: Struct undefined
|
||
|
|
|
||
|
|
## Descripcion
|
||
|
|
|
||
|
|
Este bug consiste en qeu el compilador falla al intentar callear una fucnion template
|
||
|
|
de clase\struct definida fuera del cuerpo de dicha clase\struct todo esto dentro de un namespace.
|
||
|
|
|
||
|
|
Tengo una hipotesis que esto pasa, dado qeu cuando el compilador lee el calling a una
|
||
|
|
funcion template. en OnStart o en un scope global fuera del namespace, trata de instanciar
|
||
|
|
la funcion espeicia en base a los parmaeotrs del template DENTRO del escope actual
|
||
|
|
(global por ejemplo) y debido a eso al terminar el proceso (o quizas ahi) mismo
|
||
|
|
como digmoas la clase que tiene dicha funcion esta definida en un scope diferente
|
||
|
|
falla, dado que la instnacion de la funcion se dio en global pero la clase
|
||
|
|
define diha funcion dentro de un escope del namespace... esto es una hipotesis
|
||
|
|
probable, aunque sincemante no se como fuincionara el compilador de mql5 por dentro
|
||
|
|
dado qeu es cerrado no hay docs que profundizen de parte de mql5 como funciona su motor
|
||
|
|
al momento de parsear los templates.
|
||
|
|
|
||
|
|
Aparte algo a mencionar es que este bug no es neuvo ya lleva tiempo pero igual
|
||
|
|
lo dejare aqui como recuerdo
|
||
|
|
|
||
|
|
## Estado
|
||
|
|
- Build: 6140 (o menos incluso, no tengo la build exacta desde donde emepzo)
|
||
|
|
- Fecha exacta: 2026-09-02 (fehca que lo reporto, NO LA FECHA DONDE APARECIO)
|
||
|
|
- Error que reporta el Metaeditor: `Struct undefined`
|
||
|
|
|
||
|
|
|
||
|
|
## Reproducibilidad
|
||
|
|
|
||
|
|
En Repro.mq5 esta la forma de reproducirlo
|
||
|
|
|
||
|
|
## Solucion (puede aplicar a esta build o quizas se arregle asi que ya no sera necesario)
|
||
|
|
|
||
|
|
Lo que ha funcionado durante estos meses fue que cuando ocurren este tipos de erorres, la solcuion
|
||
|
|
es definir el body de la funcion DENTRO del cuerpo de la clase (NO FUERA)..
|
||
|
|
Esto por lo visto hace que el compilador logre pasearlo o algo asi.. por lo visto las funciones templates
|
||
|
|
ah de tener otro trato que las normales dado que son "on demand" al igual qeu todas, pero implican
|
||
|
|
un proceso de espeicliacion pro calling.
|
||
|
|
|
||
|
|
|
||
|
|
## Donde se encontro
|
||
|
|
|
||
|
|
- Repositorio: https://forge.mql5.io/nique_372/CryptoByLeo/src/branch/main/Src/Fernet/Main.mqh
|
||
|
|
- Commit exacto (hash): `30eb0eb0f44f1ce291980d995f97c244762e72b8`
|
||
|
|
- Archivo exacto: `GrapichsByLeo\General\EjeLine\Ejes.mqh`
|
||
|
|
- LOC: 87-88
|
||
|
|
- Link exacto: `https://forge.mql5.io/nique_372/CryptoByLeo/src/commit/30eb0eb0f44f1ce291980d995f97c244762e72b8`
|
||
|
|
|