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`
| |||
|