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

 
Slava:
そして、それはありえないことなのです。
でも、昔は可能だったんですよ!
 
試行錯誤
template <typename T>
class CLASS_COPY
{
public:
  T Data;

  CLASS_COPY( const T &Value )
  {
    Data = Value;
  }
};

template <typename T1, typename T2>
void Copy( T1 &ObjectDst, const T2 &ObjectSrc )
{
   const CLASS_COPY<T2> Object(ObjectSrc);
   const CLASS_COPY<T1>* ObjectCopy = dynamic_cast<const CLASS_COPY<T1>*>(&Object);
   
   ObjectDst = ObjectCopy.Data; // invalid pointer access
}

問題なくコンパイルされるが、実行時にエラーでクラッシュする。コピー機能の書き方は?

 

今まで動作していたDLLが動作しなくなった。DLLは64ビットです。MT4で同じdlls x32を使用 - 動作します。

Windows 10 Home(x64ベースのPC)、1703、MT5 bild 1589
 
fxsaber:
私はそれからもがこうとした

問題なくコンパイルされますが、実行時にエラーでクラッシュします。Copy-functionをどう書くか?

dllがクリティカルでない場合はmemcpy。あるいは、組合を待ってもよい。

まあ、実際、楽しいんですけどね。開発者自身がキャスト構造をユニオンの標準的な代替品と呼んでいたのに、今はキャストできないし、まだやっていないんです。

 
どのビルドからどのEX5までがマーケットに受け入れられるのか?
 
Комбинатор:

一般的には、もちろん楽しいです。構造体のキャストは、開発者自身がユニオンの標準的な代替品と呼んでいたのですが、今はキャストはできないし、アソシエーションもまだですが、そういうことでしょうか?

だから、ユニオンの出現でキャスティングは不可能になる。シンプルなケースのみ可能となります。
 
fxsaber:

Copy-functionをどう書くか?

ファイルを使用するための完全な倒錯として、しかしネイティブに
FileReadStruct - Файловые операции - Справочник MQL4
FileReadStruct - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileReadStruct - Файловые операции - Справочник MQL4
 
Комбинатор:
ファイルを使用するのはいかにも完全に変態ですが、ネイティブ
ええ、それはBOTHです。
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

fxsaber さん 2017.04.10 16:23

コンパイルエラー につながる不要なオーバーロードの作成
template <typename T>
T Func()
{
  T Res;
  
  return(Res);
}

template <typename T>
void Func( T& Value )
{
  T Res = (MqlTick)Value;
}

void OnStart()
{
  Func<string>(); // без этой строки компилируется
  
  MqlTick Tick;
  
  Func(Tick);
}

コンパイラが作成しようとしているのは

void Func( string& );
なぜこのコードは1589でコンパイルできないのでしょうか?ここにはキャスティングはありません。
 
Комбинатор:

dllがクリティカルでない場合はmemcpy。またはユニオンを待つ

一般的には、もちろん面白いです。構造体の鋳造は、ユニオンに代わる標準的なものとして開発者から呼ばれていましたが、今では鋳造は不可能でユニオンはまだありません よね?

といった具合に。