오류, 버그, 질문 - 페이지 246

 
AlexSTAL :

이것은 클래스 방식이다.

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

#include <Indicators\Indicator.mqh>

분명한. 분명히 denkir#include <Indicators\Indicator.mqh> 를 선언하지 않았습니다.

그러나 이 기능은 여전히 디렉토리를 검색하여 찾을 수 없습니다.

 
Urain :

그렇다면 컴파일러는 호출의 모호성이 무엇이라고 맹세합니까?


분명히 int 를 long 유형으로 또는 그 반대로 변환하는 것이 있습니다. 아마도 매개변수의 수 또는 다시 로드 기능으로 자동 변환되지 않는 유형에 의해서만 가능할 것입니다.

추신: long 에서만 작동합니다. 매개변수로 전달된 int는 자동으로 long으로 변환됩니다.

 
IgorM :

분명히 int 를 long 유형으로 또는 그 반대로 변환하는 것이 있습니다. 아마도 매개변수의 수 또는 다시 로드 기능으로 자동 변환되지 않는 유형에 의해서만 가능할 것입니다.

추신: 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를 시작하지 않았습니다. 지난 세 번의 업데이트 이후에 화가 난 게시물이 너무 많아서 컴파일러가 작동하지 않거나 빌드가 잘못되었다는 사실을 알아차리기조차 꺼려집니다.

이와 같이:

 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 <Indicators\Indicator.mqh> 를 선언하지 않았습니다.

그러나 이 기능은 여전히 디렉토리를 검색하여 찾을 수 없습니다.

충분하지 않다!

이것은 외부 클래스 메소드입니다!!!

 
AlexSTAL :

충분하지 않다!

이것은 외부 클래스 메소드입니다!!!

글쎄요, 저는 여기 전문가가 아닙니다. 나는 모든 것을 손으로 쓰는 것을 선호합니다. 덴키르에게 어떻게 해야할지 단계별로 알려주 시겠습니까?
 

아마도 이것을 추가해야 할 것입니다:

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

그러나 나는 언급 된 클래스의 객체 가 필요하지 않습니다 . 그리고 내가 설명한 기본 유형 string 에 대한 간단한 함수가 필요합니다.

 
denkir :

아마도 이것을 추가해야 할 것입니다:

그러나 나는 언급 된 클래스의 객체 가 필요하지 않습니다 . 그리고 내가 설명한 기본 유형 string 에 대한 간단한 함수가 필요합니다.

반복합니다: 저는 수업의 전문가가 아닙니다. 하지만 PeriodStr 메서드인 클래스 메서드에 도달하려면 해당 클래스를 선언해야 합니다. 이 경우 CIndicator 클래스( MQL5 Reference / Standard Library / Classes for Working with Indicators / Base Classes / CIndicator ). 안 그래?