エラー、バグ、質問 - ページ 246

 
AlexSTAL:

これはクラスメソッドです

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

#include<IndicatorsIndicator.mqh>

なるほど。どうやらdenkirは#include<IndicatorsIndicator.mqh>を 宣言していないようです。

しかし、Referenceを検索しても、この機能を見つけることはできない。

 
Urain:

では、なぜコンパイラは誓うのか、呼び出しの曖昧さは何なのか。


どうやらintから longまたはその逆の型が 変換され、おそらくあなたは唯一のパラメータの数によって、または自動的に変換されていない型によってできるリロード関数

SZZ: long のみで動作し、パラメータとして渡された int は自動的に long にキャストされます。

 
IgorM:

どうやらintから longまたはその逆の型が 変換され、おそらくあなたは唯一のパラメータの数によって、または自動的に変換されていない型によってできるリロード関数

SZY: long のみで動作し、パラメータとして渡した int 型は自動的に long に変換されます。

同じ曲です。

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

ポイントは、例外なくすべての型に関数のオーバーロードをさせることでした。

また、型がiとjのコード値に対応していない場合は、警告を発生させる。

 
Urain:

開発者の皆様、オーバーロードされた関数の曖昧な呼び出しとは何か教えてください(コンパイラが悪態をついているのはこのことです)。

set' - オーバーロードされた関数へのあいまいな呼び出し。



はい、エラーが発生しました。ビルドリリース後に修正します。

を使用することができます。

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:

intやlongのオーバーロードに限らず、どんな型でもオーバーロードしても問題はない。

これは、コンパイラが明示的なパラメータ設定を別の方法で処理するだけです。

申し訳ありませんが、私は2週間MT5を実行していません。なぜなら、過去3回のアップデート後に非常に多くの怒りの投稿を見たので、コンパイラが動作していないか、あるいは私が間違ったビルドを持っているかどうかを調べることさえしたくないのです。

このように

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

は、ビルド362で動作します。

 
mql5:

はい、バグです。ビルドがリリースされた後に修正します。

とりあえず、この

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

ありがとうございます。その点は留意しておきます。
 
Yedelkin:

なるほど。どうやらdenkirは#include<IndicatorsIndicator.mqh>を 宣言していないようです。

しかし、Handbookを検索しても、この機能を見つけることはできない。

これでいいのか!?

これは、外部クラスのメソッドだ!!!!

 
AlexSTAL:

それだけじゃダメなんだ!

これは、外部クラスのメソッドです!!!

私は専門家ではないので、すべて手書きで書きたいのです。デンキルに 順を追って教えてください。
 

おそらく、そのようなものを追加する必要があるのでしょう。

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

しかし、私は言及されたクラスのオブジェクトを必要と しません。必要なのは、私が説明した基本型文字列の ための簡単な関数です。

 
denkir:

おそらく、そのようなものを追加する必要があるのでしょう。

しかし、私は言及されたクラスのオブジェクトを必要と しません。必要なのは、私が説明したような、基本型stringの ための簡単な関数です。

しかし、クラスのメソッドにアクセスするには、対応するクラス、この場合はCIndicator クラスを宣言する必要があります(MQL5 Reference / Standard Library / Indicator Classes / Basic Classes / CIndicator) 。そうでしょう?