Errores, fallos, preguntas - página 1099

 
Error en tiempo de compilación
class A {
public:
        A( int  ) { a = 2; }
        A( long ) { a = 3; }
        int a;
};

#define  F( f, cN )  \
template<typename T> \
cN *f( T t ) { return ( new cN( t ) ); }

F( a11, A )

y si no se utiliza una macro paramétrica, sustituyendo manualmente los parámetros:

//F( a11, A )
template<typename T>
A *a11( T t ) { return ( new A( t ) ); }

void OnStart()
{
        int b = 10;
        A *a = a11( b );
        Print( a.a );
        delete( a );
}
entonces todo está bien
 

Incomprensiblemente sorprendido... ME es completamente incapaz de ver las variables declaradas en inludes en otros archivos de proyecto en el nivel principal (no resalta y no puede saltar a la definición de la variable).

¿Cuánto tiempo lleva así?

 
joo:

Incomprensiblemente sorprendido... ME es completamente incapaz de ver las variables declaradas en inludes en otros archivos de proyecto en el nivel principal (no resalta y no puede saltar a la definición de la variable).

¿Desde cuándo es así?

En cada "inluder", también hay que especificar otros archivos a los que enlazar.
 
tol64:
En cada "inluder", debe especificar también otros archivos a los que enlazar.

El proyecto compila sin problemas, lo que significa que el compilador ve todo, lo que hay. El editor de ME no lo hace.

Además, ¿cómo te imaginas especificar el archivo principal ejecutable .mq5 como un inluder donde se declara la variable?

 
joo:

El proyecto compila sin problemas, lo que significa que el compilador ve todo, lo que hay. Pero el editor de ME no lo hace.

Además, ¿cómo te imaginas especificar el archivo principal ejecutable .mq5 como un inline donde se declara la variable?

Por ejemplo, así:

//--- Связь с основным файлом эксперта
#include "..\Main.mq5"
O bien, dar un breve ejemplo, en el que no se puede hacer algo. Será más rápido. )
 
tol64:

Por ejemplo, así:

O bien, dar un breve ejemplo, en el que no se puede hacer algo. Será más rápido. )
\Proyecto

Principal.mq5

input string Nevidimka="труляля";

#include "Include\Incl.mqh"

\Proyecto: Incluir

Incl.mqh

void Func()
{
  Print(Nevidimka);//Тут переменная Nevidimka не подсвечивается как должна бы подсвечиваться и нельзя перейти к месту её объявления
}
 
joo:
...

Archivo principal en la carpeta del proyecto:

//+------------------------------------------------------------------+
//|                                                         Main.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//---
#include "Include\Incl.mqh"
//---
input string Nevidimka="труляля";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| OnTick                                                           |
//+------------------------------------------------------------------+
void OnTick()
  {
  }
//+------------------------------------------------------------------+

Un archivo plug-in en el directorio Project\Include:

//--- Связь с основным файлом эксперта
#include "..\Main.mq5"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Func()
  {
   Print(Nevidimka); // Теперь подсвечивается и можно перейти к месту её объявления
  }
//+------------------------------------------------------------------+
 
tol64:

Archivo principal en la carpeta del proyecto:

Un archivo plug-in en el directorio Project\Include:

¿Qué sentido tiene este gesto inútil? ME debe ver (y programar) las variables y funciones exactamente como lo hace el compilador.

Además, lo que propones en la mayoría de los casos es inconveniente (editar los inludes para cada proyecto...).

 

El intellisense de cada archivo sólo funciona dentro de su ámbito. Es decir, se escanea todo el archivo con todas sus inclusiones obvias.

Usted propone mostrar los datos de algún archivo sin enlaces a otros archivos desconocidos. Esto es fundamentalmente erróneo.

 
joo:
Entonces, ¿para qué sirve este gesto inútil? ME debe ver (y el programador) las variables y funciones exactamente como lo hace el compilador.
No conozco ninguna otra opción. ) Tal vez alguien más pueda responder.