나는 거기에 기능이 없지만 정확히 당신이 설명한 작업이 해결되고 있습니다. 나는 CNode 목록의 기본 클래스(메서드가 Prev(), Next() 등임)를 가지고 있으며 주기에는 후속 항목인 COrder의 필드에 대한 호출이 있습니다. 주기는 정의 1회에 선언된 다음 모든 곳에서 사용됩니다.
분명히 당신이 옳았습니다. 귀하의 예에 따라 시도했지만 여전히 typedef를 사용하고 싶습니다.
#property strict#include <Object.mqh>
#include <Arrays\List.mqh>
//+------------------------------------------------------------------+class CMyclass: public CObject
{
public :
int x;
double y;
void CMyclass( void ):x(- 1 ),y(- 2.2 ) { }
};
typedef CMyclass (*PtrCMyclass)(CObject*);
PtrCMyclass Myclass;
//+------------------------------------------------------------------+voidOnStart ()
{
CList *base= new CList;
for ( int i= 0 ;i< 3 ;i++)
{
base.Add( new CMyclass);
Myclass(base.GetCurrentNode()).x = 99 ;
Myclass(base.GetCurrentNode()).y = - 555.5 ;
}
for ( int i= 0 ;i< 3 ;i++)
{
Print (Myclass(base.GetNodeAtIndex(i)).x, " : " ,Myclass(base.GetNodeAtIndex(i)).y);
}
delete base;
}
//+------------------------------------------------------------------+
이제 컴파일러는 내 예제를 건너뛰지만 어딘가에 필요한 ... 뭔가가 필요합니다 ... 하지만 무엇을? 실행할 때 오류가 발생합니다.
내가 위에 쓴 것처럼 시도하십시오. 여기서 typedef는 실제로 필요하지 않지만 코드와 함수 호출 사이에 추가 "패드"가 있기 때문입니다. 여전히 동일한 포인터를 사용하여 다른 클래스에 대해 이 호출을 오버로드할 수 없습니다. 각 클래스에 대해 새로 만들어야 합니다. 이제 typedef가 완전히 쓸모없는 것보다 조금 덜하다는 것을 이해해야 할 때입니다. IMHO :)
Ilya Malev : 내가 위에 쓴 것처럼 시도하십시오. 여기서 typedef는 실제로 필요하지 않지만 코드와 함수 호출 사이에 추가 "패드"가 있기 때문입니다. 여전히 동일한 포인터를 사용하여 다른 클래스에 대해 이 호출을 오버로드할 수 없습니다. 각 클래스에 대해 새로 만들어야 합니다. 이제 typedef가 완전히 쓸모없는 것보다 조금 덜하다는 것을 깨달을 때입니다. IMHO :)
시도했지만 여전히 defans와 작업하는 방법을 모릅니다. 과학은 복잡하고 오류가 있습니다.tst_file EURUSD, H1: 'tst_file.mq4'에서 잘못된 포인터 액세스(31.56)
#property strict#include <Object.mqh>
#include <Arrays\List.mqh>
//+------------------------------------------------------------------+class CMyclass: public CObject
{
public :
int x;
double y;
void CMyclass( void ):x(- 1 ),y(- 2.2 ) { }
};
//+------------------------------------------------------------------+#define alive(node) ( CheckPointer (node)== POINTER_DYNAMIC )
#define loopf(type, node) for (type *o; o=node;)
//+------------------------------------------------------------------+voidOnStart ()
{
CList *base= new CList;
CMyclass *res;
for ( int i= 0 ;i< 3 ;i++)
{
base.Add( new CMyclass);
loopf(CMyclass,base.GetCurrentNode()){ o.x = 99 ; res.y = 555 ;}
}
for ( int i= 0 ;i< 3 ;i++)
{
res=base.GetNodeAtIndex(i);
Print (res.x, " : " ,res.y);
}
delete base;
}
//+------------------------------------------------------------------+
나는 거기에 기능이 없지만 정확히 당신이 설명한 작업이 해결되고 있습니다. 나는 CNode 목록의 기본 클래스(메서드가 Prev(), Next() 등임)를 가지고 있으며 주기에는 후속 항목인 COrder의 필드에 대한 호출이 있습니다. 주기는 정의 1회에 선언된 다음 모든 곳에서 사용됩니다.
분명히 당신이 옳았습니다. 귀하의 예에 따라 시도했지만 여전히 typedef를 사용하고 싶습니다.
이제 컴파일러는 내 예제를 건너뛰지만 어딘가에 필요한 ... 뭔가가 필요합니다 ... 하지만 무엇을? 실행할 때 오류가 발생합니다.
'tst_file.mq4'에서 잘못된 함수 포인터 호출(30,7)
분명히 당신이 옳았습니다. 귀하의 예에 따라 시도했지만 여전히 typedef를 사용하고 싶습니다.
이제 컴파일러는 내 예제를 건너뛰지만 어딘가에 필요한 ... 뭔가가 필요합니다 ... 하지만 무엇을? 실행할 때 오류가 발생합니다.
'tst_file.mq4'에서 잘못된 함수 포인터 호출(30,7)
따라서 함수를 작성하고 포인터에 할당해야 합니다)))
따라서 함수를 작성하고 포인터에 할당해야 합니다)))
흠, 논리적이지만 다음과 같은 함수를 작성하면 클래스 필드에 액세스하기 위해 요점을 부여하지 않습니다.
PtrCMyclass Myclass( CObject* obj){ return(GetPointer(obj)); };
'x' - 구조체 또는 클래스 유형이 필요함 tst_file.mq4 서른 38
((CMyclass*)base.GetNodeAtIndex(i)).x
내가 위에 쓴 것처럼 시도하십시오. 여기서 typedef는 실제로 필요하지 않지만 코드와 함수 호출 사이에 추가 "패드"가 있기 때문입니다. 여전히 동일한 포인터를 사용하여 다른 클래스에 대해 이 호출을 오버로드할 수 없습니다. 각 클래스에 대해 새로 만들어야 합니다. 이제 typedef가 완전히 쓸모없는 것보다 조금 덜하다는 것을 깨달을 때입니다. IMHO :)
시도했지만 여전히 defans와 작업하는 방법을 모릅니다. 과학은 복잡하고 오류가 있습니다. tst_file EURUSD, H1: 'tst_file.mq4'에서 잘못된 포인터 액세스(31.56)
((CMyclass*)base.GetNodeAtIndex(i)).x
만세! 벌었다!!!
고맙습니다!
;)
시도했지만 여전히 defans와 작업하는 방법을 모릅니다. 과학은 복잡하고 오류가 있습니다. tst_file EURUSD, H1: 'tst_file.mq4'에서 잘못된 포인터 액세스(31.56)
내 루프가 라이브러리 노드와 함께 작동하면 매우 놀랄 것입니다)))
내 마지막 게시물에서 typedef가 있는 코드를 의미했습니다. 물론)))
만세! 벌었다!!!
고맙습니다!
;)
정말, 가장 눈에 띄는 것을 왜 즉시 시도하지 않았습니까? :) 그래서 typedef로 빛을 발하고 싶습니까? =))))
정말, 가장 눈에 띄는 것을 왜 즉시 시도하지 않았습니까? :) 그래서 typedef로 빛을 발하고 싶습니까? =))))
나는 시도했다! 그러나 MQL을 사용 하여 포인터를 역참조하는 것이 불가능할 것이라는 확신이 있었고 모든 것이 진부한 것으로 판명되었습니다. 더 많은 괄호를 넣어야 했습니다! ))))
추신: typedef는 주제입니다. 시도해 보았지만 그다지 저속하지도 않습니다. 여전히 문제가 발생한 위치를 파악해야 합니다. 제 예제는 typedef의 도움으로 작동해야 합니다!
어떤 이유로 지표가 M1 차트에서만 작동하지 않고 다른 모든 차트에서는 실패 없이 작동할 수 있습니까? (MQL5). 다음은 함수입니다. M1 차트에서 0이 주어지면 어떤 이유로 하나의 변수를 요약하지 않습니다.
즉, Open = Close인 촛불이 있고 코드 자체가 삐뚤게 작성되어 0으로 나누는 검사가 포함되어 있지 않습니다. 이 슬픈 상황은 TF에 의존하지 않습니다.