Ошибки, баги, вопросы - страница 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 должен передаваться не результат выражения, как у Вас, а ссылка

 

Как бороться с данной проблемой?

После установки эксперта на график, который строит РЕНКО графики, терминал намертво завис.

Перезагрузки терминала не помогают. Эксперт из папки удалил - не помогло!

Что делать?

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

Тернарная здесь без присваивания же.

 
zaskok3:

Именно содержимое, а не сама переменная? Видимо, у меня здесь и проявилось слабое понимание. Спасибо!

Попробовал тернарную альтернативу, не вышло:

Тернарная здесь без присваивания же.

Результатом тернарной операции является либо результат первого выражения, либо результат второго выражения в зависимости от результата условного выражения.

Полученный результат должен быть куда-либо присвоен (либо быть участником другого выражения), так как является rvalue

Это примерно то же самое, что просто написать

int a=1;
int b=2;

a + b;
 

Slawa:

Полученный результат должен быть куда-либо присвоен (либо быть участником другого выражения), так как является rvalue

Это примерно то же самое, что просто написать

Если заменяю void Func на int Func, тогда, действительно, один в один результат. С void - облом. Это как раз из-за выделенной фразы?
 
zaskok3:
Если заменяю void Func на int Func, тогда, действительно, один в один результат. С void - облом. Это как раз из-за выделенной фразы?
Да
 
Slawa:
Да
Усвоил. Спасибо за ликбез!
Причина обращения: