Errori, bug, domande - pagina 246

 
AlexSTAL:

Questo è un metodo di classe

https://www.mql5.com/ru/docs/standardlibrary/technicalindicators/cindicator

#include<IndicatoriIndicatori.mqh>

Capisco. Apparentemente,denkir non ha dichiarato#include<Indicators\Indicator.mqh>.

Ma una ricerca nel Riferimento non è ancora in grado di trovare questa funzione.

 
Urain:

Allora perché il compilatore giura, qual è l'ambiguità della chiamata?


apparentemente int a lungo o viceversa i tipi sono convertiti, probabilmente è possibile solo dal numero di parametri o da tipi che non sono automaticamente convertiti ricaricare le funzioni

SZZ: lavora solo con long, gli int passati come parametri saranno automaticamente castati a long.

 
IgorM:

apparentemente int a lungo o viceversa i tipi sono convertiti, probabilmente è possibile solo dal numero di parametri o da tipi che non sono automaticamente convertiti ricaricare le funzioni

SZY: lavora solo con long, i tipi int che passate come parametri saranno automaticamente convertiti in long.

Stessa canzone.

class CA
  {
public:
   void set(long i,long j,long n){Print("перегрузка long");};
   void set(long i,long j,int n){Print("перегрузка int");};
  };

void OnStart()
  {
//---
   CA a;
   int Int=3;
   long Long=4;
   a.set(1,2,Int);
   a.set(1,2,Long);
  }

Il punto era di rendere l'overloading di funzioni per tutti i tipi senza eccezioni.

E se un tipo non corrisponde ai valori del codice i e j, genererà un avviso.

 
Urain:

Cari sviluppatori, per favore ditemi cos'è la chiamata ambigua a una funzione sovraccaricata (questo è ciò che il compilatore sta giurando):

'set' - chiamata ambigua a una funzione sovraccarica



sì, c'è un errore, lo sistemeremo dopo il rilascio della build

per ora puoi usare

class CA
  {
public:
   void set(int i,int j,long n){Print("перегрузка long");};
   void set(int i,int j,int n){Print("перегрузка int");};
  };

void OnStart()
  {
//---
   CA a;
   int Int=3;
   long Long=4;
   a.set((int)1,(int)2,Int);
   a.set((int)1,(int)2,Long);
  }
 
Urain:

Non c'è nessun problema solo con l'overloading int e long, sovraccaricando qualsiasi tipo il problema sarà lo stesso.

È solo che il compilatore gestisce un parametro esplicito in modo diverso.

Mi dispiace, non ho eseguito MT5 per due settimane, perché vedo così tanti post arrabbiati dopo gli ultimi tre aggiornamenti che non voglio nemmeno scoprire se il compilatore non funziona o forse ho la build sbagliata, che hai

come questo:

class CA
  {
public:
   void set(int i,int j,long n){Print("перегрузка long");};
   void set(int i,int j,double x){Print("перегрузка double");};
  };
  
void OnStart()
  {
//---
   CA a;
   int Int=3;
   double doubl=4;
   a.set(1,2,Int);
   a.set(1,2,doubl);
  }

funziona, build 362.

 
mql5:

Sì, è un bug, lo sistemeremo dopo il rilascio della build

Nel frattempo, puoi usare questo

a.set((int)1,(int)2,Long);

Grazie. Lo terremo presente.
 
Yedelkin:

Capisco. Apparentemente,denkir non ha dichiarato#include<Indicators\Indicator.mqh>.

Ma una ricerca nel manuale non riesce ancora a trovare questa funzione.

Questo non è abbastanza!

Questo è un metodo di una classe esterna!!!

 
AlexSTAL:

Non è abbastanza!

Questo è un metodo di classe esterno!!!

Beh, non sono un esperto, preferisco scrivere tutto a mano. Potresti per favore dire aDenkir cosa fare, passo dopo passo.
 

Probabilmente è necessario aggiungere una cosa del genere:

#include <Arrays\Array.mqh>
#include <Arrays\ArrayObj.mqh>

Ma non ho bisogno di un oggetto delle classi menzionate. Quello di cui ho bisogno è una semplice funzione per la stringa di tipo base che ho descritto.

 
denkir:

Probabilmente è necessario aggiungere una cosa del genere:

Ma non ho bisogno di un oggetto delle classi menzionate. Ciò di cui ho bisogno è una semplice funzione per stringa di tipo base, che ho descritto.

Ma per arrivare ai metodi della classe, bisogna dichiarare la classe corrispondente, nel nostro caso è la classe CIndicator (MQL5 Reference / Standard Library / Classes for working with indicators / Basic classes / CIndicator) . Non è così?