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

 
コンパイル時のエラー
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 )

また、パラメトリックマクロを使用しない場合は、手動でパラメータを代入してください。

//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 );
}
ならいい
 

言いようのない驚き...。MEは、メインレベルの他のプロジェクト ファイルのinludesで宣言された変数を完全に見ることができません(ハイライトされず、変数定義にジャンプすることもできません)。

いつからこんな風になったんだ?

 
joo:

言いようのない驚き...。MEは、メインレベルの他のプロジェクトファイルのinludesで宣言された変数を完全に見ることができません(ハイライトされず、変数定義にジャンプすることもできません)。

いつからこのような状態に?

また、各 "inluder "には、リンク先の他のファイルを指定する必要があります。
 
tol64:
各 "inluder "では、リンク先の他のファイルも指定する必要があります。

プロジェクトは問題なくコンパイルされます。つまり、コンパイラはすべてを見ている、つまり何がどこにあるのかを知っているのです。MEエディターはそうではない。

また、変数が宣言されて いるinluderとして、メインの実行ファイルである.mq5ファイルを指定することは、どのように考えればよいのでしょうか?

 
joo:

プロジェクトは問題なくコンパイルされます。つまり、コンパイラはすべてを見ている、つまり何がどこにあるのかを知っているのです。しかし、MEエディターはそうではありません。

それに、変数が宣言されて いるインラインに、メインの実行ファイルである.mq5を指定するというのはどうでしょうか?

例えば、こんな風に。

//--- Связь с основным файлом эксперта
#include "..\Main.mq5"
あるいは、何かできないことがあれば、簡単な例を挙げてください。より高速になります。)
 
tol64:

例えば、こんな風に。

あるいは、できないことの簡単な例を挙げてください。より速くなります。)
\୧⃛(๑⃙⃘◡̈๑⃙⃘)

Main.mq5

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

#include "Include\Incl.mqh"

\୧⃛(๑⃙⃘◡̈๑⃙⃘)

Incl.mqh

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

Project フォルダー内のメインファイル。

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

ProjectInclude ディレクトリにあるプラグインファイルです。

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

Project フォルダー内のメインファイル。

ProjectInclude ディレクトリにあるプラグインファイルです。

この無意味なジェスチャーに何の意味があるのでしょうか?MEは変数と関数をコンパイラと全く同じように見なければならない(プログラマも)。

それに、あなたが提案することは、ほとんどの場合、不便です(プロジェクト ごとにインクルードを編集するのですか?)

 

各ファイルのインテリセンスは、そのスコープ内でしか機能しません。つまり、ファイル全体を、その明らかな含有物をすべて含めてスキャンするのです。

あるファイルのデータを、他の未知のファイルへのリンクなしで表示することを提案します。これは根本的に間違っています。

 
joo:
では、この無意味なジェスチャーは何のためなのでしょうか?MEは(プログラマは)コンパイラと全く同じように変数と関数を見なければなりません。
他の選択肢を知らない。) 誰か答えてくれるかもしれませんね。