Erros, bugs, perguntas - página 1099

 
Erro no momento da compilação
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 )

e se não utilizar uma macro paramétrica, através da substituição manual dos 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 );
}
então tudo está bem
 

Surpresa indescritível... ME é completamente incapaz de ver variáveis declaradas em inlúdios em outros ficheiros de projectos no nível principal (não destaca e não pode saltar para a definição da variável).

Há quanto tempo é assim?

 
joo:

Surpresa indescritível... ME é completamente incapaz de ver variáveis declaradas em inlúdios em outros ficheiros de projectos no nível principal (não destaca e não pode saltar para a definição da variável).

Há quanto tempo é assim?

Em cada "inluder", também é necessário especificar outros ficheiros aos quais se deve ligar.
 
tol64:
Em cada "inluder", deve também especificar outros ficheiros aos quais deve estar ligado.

O projecto compila muito bem, o que significa que o compilador vê tudo - o que está onde. O editor do ME não o faz.

Além disso, como imagina especificar o ficheiro principal executável .mq5 como um inluder onde a variável é declarada?

 
joo:

O projecto compila muito bem, o que significa que o compilador vê tudo - o que está onde. Mas o editor de EM não o faz.

Além disso, como imagina especificar o ficheiro principal executável .mq5 como um inline onde a variável é declarada?

Por exemplo, como este:

//--- Связь с основным файлом эксперта
#include "..\Main.mq5"
Ou dê um breve exemplo, no qual não pode fazer nada. Será mais rápido. )
 
tol64:

Por exemplo, como este:

Ou dê um breve exemplo, no qual não pode fazer nada. Será mais rápido. )
\Projecto

Main.mq5

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

#include "Include\Incl.mqh"

\Projecto Incluir

Incl.mqh

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

Ficheiro principal na pasta do Projecto:

//+------------------------------------------------------------------+
//|                                                         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()
  {
  }
//+------------------------------------------------------------------+

Um ficheiro plug-in no directório do Projecto\Incluir:

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

Ficheiro principal na pasta do Projecto:

Um ficheiro plug-in no directório do Projecto\Incluir:

Qual é o sentido deste gesto inútil? ME deve ver (e programar) as variáveis e funções exactamente como o compilador faz.

Além disso, o que se propõe na maioria dos casos é inconveniente (editar os inlúdios para cada projecto?).

 

O intellisense de cada ficheiro só funciona no seu próprio âmbito. Ou seja, todo o ficheiro é digitalizado com todas as suas inclusões óbvias.

Propõe-se mostrar os dados de algum ficheiro sem ligações a outros ficheiros desconhecidos. Isto é fundamentalmente errado.

 
joo:
Qual é então o objectivo deste gesto inútil? ME deve ver (e o programador) as variáveis e funções exactamente como o compilador faz.
Não tenho conhecimento de outras opções. ) Talvez outra pessoa possa responder.