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

 
Karputov Vladimir:
想像上の(あるいは架空の)購読者に代わって質問するのはやめてください。購読者から質問があれば、自分で質問させればいいのです。そうでなければ、信号の宣伝と見なすことにします。
私の信号は、長い間、広告を必要としなかったのです。自分が利用するサービスの技術的な部分を理解するように心がけています。それでも、最初に声をかけられたのは私です。
 
Artem Prischepa:
誤解されているようですが、私の信号は長い間、広告を必要としませんでした。自分が利用するサービスの技術的な部分は自分で理解するようにしています。それでも、最初に声をかけられたのは私です。
その場合は、シグナルズのサービスに関するFAQ(最初の投稿)にある質問を勉強してください。
 

バグなのか、私の理解力のなさなのか。

void Func( int & Tmp )
{
  return;
}

void OnStart( void )
{
  int Tmp1, Tmp2;
  
  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected 
    
  return;
}
 
zaskok3:

これはバグというか、私の理解力のなさです。

三元 式の結果は,変数Tmp1または変数Tmp2の内容である。

また,Func 関数には,式の結果を渡すのではなく参照を渡す必要があります.

 

この問題にどう対処すればいいのか?

RENCOチャートを構築するチャートにExpert Advisorをインストールした後、端末が永久にハングアップしてしまいます。

端末を再起動してもダメです。フォルダからExpertを削除しましたが、解決しませんでした。

どうすればいいのか?

win7/64 mt4/950

 
Slawa:

三項演算 式の結果は,変数 Tmp1 または変数 Tmp2 の内容と する。

変数そのものではなく、内容なのでしょうか?ここに私の理解力のなさが現れていたのだろう。ありがとうございました。

三項対立の代替案を試したが、うまくいかなかった。

//  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected
  
  // Так не пашет
  (0 > 1) ? Func(Tmp1) : Func(Tmp2); // 'Func' - expression of 'void' type is illegal
  
  // Так, конечно, работает
  if (0 > 1)
    Func(Tmp1);
  else
    Func(Tmp2);

ここでの3元は無配置です。

 
zaskok3:

まさに、変数そのものではなく、内容?どうやら、ここに私の理解力のなさが表れていたようです。ありがとうございました。

3元系の代替案を試したが、うまくいかなかった。

ここは無配置で3元ですが。

三項演算の結果は、条件式の結果によって、第一の式の結果か第二の式の結果のどちらかになります。

結果はrvalueであるため、どこかに代入されなければならない(または他の式のメンバでなければならない)。

これは、単純に書くのと同じぐらいです。

int a=1;
int b=2;

a + b;
 

Slawa:

結果はrvalueであるため、どこかに代入 されなければならない(または他の式のメンバでなければならない)。

これは、ただ書くのと同じぐらいです

void Funcをint Funcに置き換えると、確かに結果は同じになります。ボイドでガックリです。ハイライトされたフレーズのせいだけでしょうか?
 
zaskok3:
void Funcをint Funcに置き換えると、確かに結果は同じになります。虚無感がハンパない。ハイライトされたフレーズのせいだけでしょうか?
はい
 
Slawa:
はい
了解です。勉強になりました!ありがとうございます。