Hatalar, hatalar, sorular - sayfa 246

 
AlexSTAL :

Bu bir sınıf yöntemidir

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

#include <Göstergeler\Gösterge.mqh>

Açık. Görünüşe göre denkir #include <Indicators\Indicator.mqh> açıklamamış.

Ancak bu işlev Dizin arandığında hala bulunamadı.

 
Urain :

Peki derleyici neden küfür ediyor, çağrının belirsizliği nedir?


görünüşe göre int'nin uzun türlere dönüştürülmesi veya tam tersi, muhtemelen yalnızca parametre sayısı veya otomatik olarak yeniden yükleme işlevlerine dönüştürülmeyen türlerle mümkündür.

Not: yalnızca long ile çalışın, int parametreleri otomatik olarak long'a dönüştürüleceğinden geçirilen

 
IgorM :

görünüşe göre int'nin uzun türlere dönüştürülmesi veya tam tersi, muhtemelen yalnızca parametre sayısı veya otomatik olarak yeniden yükleme işlevlerine dönüştürülmeyen türlerle mümkündür.

Not: yalnızca long ile çalışın, parametreler otomatik olarak long'a dönüştürüleceğinden geçirilen int

Aynı şarkı.

 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);
  }

Bunun özü, istisnasız tüm türlerde aşırı işlev yüklemesi yapmaktı.

Ve tür, i ve j kod değerleriyle eşleşmezse bir uyarı verir.

 
Urain :

Sevgili geliştiriciler, lütfen aşırı yüklenmiş bir işlevi çağırmanın belirsizliğinin ne olduğunu cevaplayın (derleyici buna yemin eder):

'set' - aşırı yüklenmiş işleve belirsiz çağrı



evet, bir hata, derleme yayınlandıktan sonra düzelteceğiz

kullanabildiğin kadar

 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 :

Sadece int ve long'u aşırı yüklemekle değil, herhangi bir türde aşırı yüklemekle sorun olmaz, sorun aynı olacaktır.

Sadece derleyici bir şekilde parametrenin açık ayarını özel bir şekilde ele alır.

Anlıyorum, üzgünüm - MT5'i iki haftadır başlatmadım. Son üç güncellemeden sonra o kadar çok kızgın gönderi görüyorum ki, derleyicinin çalışmadığını anlamaya bile isteksizim ya da ben, belki de şu anda sahip olduğunuz yanlış yapıya sahibim.

bunun gibi:

 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);
  }

çalışır, inşa 362

 
mql5 :

evet, bir hata, derleme yayınlandıktan sonra düzelteceğiz

kullanabildiğin kadar

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

Teşekkür ederim. Bileceğiz.
 
Yedelkin :

Açık. Görünüşe göre denkir #include <Indicators\Indicator.mqh> açıklamamış.

Ancak bu işlev Dizin arandığında hala bulunamadı.

Bu yeterli değil!

Bu bir dış sınıf metodudur!!!

 
AlexSTAL :

Bu yeterli değil!

Bu bir dış sınıf metodudur!!!

Pekala, ben burada uzman değilim. Her şeyi elle yazmayı tercih ederim. Denkir'e adım adım ne yapacağınızı söyler misiniz?
 

Muhtemelen şunu eklemeniz gerekir:

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

Ama bahsedilen sınıfların bir nesnesine ihtiyacım yok . Ve tanımladığım string taban tipi için basit bir fonksiyona ihtiyacımız var.

 
denkir :

Muhtemelen şunu eklemeniz gerekir:

Ama bahsedilen sınıfların bir nesnesine ihtiyacım yok . Ve tanımladığım string taban tipi için basit bir fonksiyona ihtiyacımız var.

Tekrar ediyorum: Derslerde uzman değilim. Ancak PeriodStr yöntemi olan class yöntemine ulaşmak için ilgili sınıfı bildirmeniz gerekir. Bu durumda, CIndicator sınıfı ( MQL5 Reference / Standard Library / Göstergelerle Çalışma Sınıfları / Temel Sınıflar / CIndicator ). Değil mi?