MQL5의 OOP에 대한 질문 - 페이지 73

 
Igor Makanu :

적절한 수준의 의사 소통으로 내림차순 : 주제 주제에 대한 내 질문? 인터넷에서 가져온 사진을 가지고 여기까지 온 이유는 무엇입니까? 답을 알고 있습니까? - 아니, 앉아서 조용히;)

첫째 - 찌르지 말고 둘째 - 진실에 그렇게 격렬하게 반응하는 것은 없습니다.
솔직히 말해서, 당신은 오늘의 대화 상대와 그리 멀지 않은 것 같습니다.

MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론

이고르 마카누 , 2020.06.07 13:46

Carcass77 안녕하세요 여러분. 코드에 문자열 유형의 변수를 삽입하는 데 도움이 됩니다. 감사해요

자신의 질문에 답할 수 있습니까?
아니면 어딘가에서 코드 조각을 잘라서 사용할 수 없습니까? 그리고 당신은 무슨 일이 일어나고 있는지 알아 내야합니다
......
하지만 나는 이것이 갈 길이라고 생각하지 않는다

 

한 악명높은 사회자는 음란한 답변에 도발을 위해 금지령에 보내겠다고 약속했습니다 :-)

기다리다...

 
일부는 더 많이 알고 일부는 덜 알고 있습니다. 포럼 - 의사 소통 및 질문과 답변을 위한 것입니다.
지식을 풍부하게 하기 위해 질문하는 것을 부끄러워하지 마십시오. 질문자에게 굴복하는 것은 부끄러운 일입니다. 이것은 다음 코스에 합격하고 "입술로 성지"를 방송하는 학생 수준입니다. 일반적인 지식...
 
Maxim Kuznetsov :

한 악명높은 사회자는 음란한 답변에 도발을 위해 금지령에 보내겠다고 약속했습니다 :-)

기다리다...

화내기 힘들고, 군대에서 욕설 다 뱉어냈어, 그거 없으면 안 돼))))

 
Maxim Kuznetsov :

한 악명높은 사회자는 음란한 답변에 도발을 위해 금지령에 보내겠다고 약속했습니다 :-)

기다리다...

아니, 맥스, 그렇지 않아. 열린 마음으로 읽어주세요.
 
#include <JSON\json.mqh>

JSONObject * getJSONObject( const string json)
{
   JSONValue *jv =((JSONParser *)( new JSONParser())).parse(json);   //1
   if (jv != NULL && jv.isObject()) return ((JSONObject *)jv);       //2
   Print ( __FUNCSIG__ + "parser error, json = " ,json);
   delete jv;                                                       //3
   return ( NULL );
}
void OnStart ()
{
   JSONObject *jobj = getJSONObject( "{\"ObjType\":2,\"m_period\":1}" );
   if(jobj!=NULL) Print("m_period = ", jobj.getInt("m_period"));    
   delete jobj;                                                     //3
}


1. new를 통해 생성된 JSONParser 객체에 대한 삭제 없음
JSONParser* 의 무의미한 캐스팅
로컬 JSONParser 변수 가 마음에 들지 않는 이유는 무엇입니까? 아니면 임시 개체를 사용하고 싶었지만 서명을 모르십니까?

2. JSONObject* 의 무의미한 캐스팅
3. 변수 jv와 jobj가 NULL이 아닌 것은 확실합니까? 그렇지 않으면 MQL에서 널 포인터를 삭제하면 로그에 "쓰레기"가 인쇄됩니다.

 
Sergey Dzyublik :


1. new를 통해 생성된 JSONParser 객체에 대한 삭제 없음
JSONParser* 의 무의미한 캐스팅
지역 변수 JSONParser 가 마음에 들지 않는 이유는 무엇입니까? 아니면 임시 개체를 사용하고 싶었지만 서명을 모르십니까?

2. JSONObject* 의 무의미한 캐스팅
3. 변수 jv와 jobj가 NULL이 아닌 것은 확실합니까? 그렇지 않으면 MQL에서 널 포인터를 삭제하면 로그에 "쓰레기"가 인쇄됩니다.

고마워, 그게 뭔가

의미 없음 해당 없음, 이 방법은 라이브러리 작성자가 사용했지만 다른 방식으로 구문 분석 호출을 작성할 이유가 없습니다.


MQL을 사용하면 포인터로 작업할 때 상황이 명확하지 않습니다. 포인터가 엔터티가 될 때 포인터를 역참조할 수 없고 개체에 대한 포인터가 있을 때 악마가 다리를 부러뜨릴 것입니다(((

추신: 저는 20년 전에 C ++를 가르쳤습니다. 앞으로는 프로덕션 엔지니어에게 거의 사용되지 않습니다. 처음에는 거의 모든 사람들이 Delphi에 앉았다가 Sharp로 크롤링했습니다. 적용 가능, 모든 것이 전문화 된 소프트웨어 작업에 있습니다. 분명히 기술 전문 학생들을 위한 대학의 흔적입니다. 그들은 항상 파스칼로 훈련을 시작합니다. 심지어 볼고그라드 폴리테크닉 대학교에서도 터보 파스카를 읽습니다 ... 컴파일러가 어디로 가는지 아는 사람 ))))


추신: holivar를 제거하면 페인트가 칠하지 않습니다. 일반적으로 그 반대의 경우도 마찬가지입니다.

 
Igor Makanu :

고마워, 그게 뭔가

의미 없음 해당 없음, 이 방법은 라이브러리 작성자가 사용했지만 다른 방식으로 구문 분석 호출을 작성할 이유가 없습니다.


MQL을 사용하면 포인터로 작업할 때 상황이 명확하지 않습니다. 포인터가 엔터티가 될 때 포인터를 역참조할 수 없고 개체에 대한 포인터가 있을 때 악마가 다리를 부러뜨릴 것입니다(((

추신: 저는 20년 전에 C ++를 가르쳤습니다. 앞으로는 프로덕션 엔지니어에게 거의 사용되지 않습니다. 처음에는 거의 모든 사람들이 Delphi에 앉았다가 Sharp로 크롤링했습니다. 적용 가능, 모든 것이 전문화 된 소프트웨어 작업에 있습니다. 분명히 기술 전문 학생을 위한 대학의 흔적입니다. 그들은 항상 파스칼로 교육을 시작합니다. 볼고그라드 폴리테크닉 대학교에서도 터보 파스칼을 읽습니다 ... 컴파일러가 어디로 가는지 아는 사람 ))))


추신: holivar를 제거하면 페인트가 칠하지 않습니다. 일반적으로 그 반대의 경우도 마찬가지입니다.

예, 여기에는 포인터가 없습니다.) 클래스에 대한 핸들이 있지만 이를 사용하는 작업은 포인터로 작업하는 것과 유사하지만 공통된 모든 것이 끝나는 곳입니다.

이제 하이라이트:

  • 스택이나 힙에서 객체를 생성합니다.
    CTest test;             //test - object
    CTest* test= new CTest;   //test - handle of object
    , 범위를 종료할 때 첫 번째 경우 컴파일러는 암시적으로 소멸자에 대한 호출을 추가하지만 메모리가 지워지지 않고 스택 포인터만 함수 호출 이전 위치로 반환됩니다. 두 번째 경우에는 범위를 벗어날 때 개체가 점유한 메모리가 메모리 관리자에 대해 점유된 것으로 표시된 상태로 남아 있고 이를 가리키는 포인터가 없기 때문에 해제할 수 없습니다(이를 메모리 누수라고 함). 삭제를 통해 개체를 명시적으로 파괴합니다.
  • 로컬 런타임에 관해서. 여기서 핸들은 특별히 오버로드된 함수가 없는 경우 암시적으로 역참조됩니다. 예를 들면 다음과 같습니다.
     class CTest{
    };
    
    void OnStart ()
      {
       CTest test;
       CTest* _test= new CTest;
       Test(test);
       Test(&test);
       Test(_test);
       _Test(_test);
       delete _test;
      }
      
    void Test(CTest &test){ Print ( "Object" );}
    void Test(CTest* test){ Print ( "Handle" );}
    void _Test(CTest &test) { Print ( "Ok" );}
    추신. 예, 그리고 당신은 날카로운 것을 잊어 버립니다. 공통점은 전혀 없습니다)))
 

Vladimir Simakov :

추신. 예, 그리고 당신은 날카로운 것을 잊어 버립니다. 공통점은 전혀 없습니다)))

잘 안되고, 빨리 익숙해지고, 모든 것이 논리적입니다. 어딘가에서 엉망이 된 경우 - VS가 즉시 알려주고 코드를 실행할 때 - 함수 본문 을 떠났습니다. , 생성한 최대값에 NULL이 할당됨 - 직접 제거함))

고마워, 나는 그것에 대해 생각할 것이다

 
Igor Makanu :

잘 안되고, 빨리 익숙해지고, 모든 것이 논리적입니다. 어딘가에서 엉망이 된 경우 - VS가 즉시 알려주고 코드를 실행할 때 - 함수 본문 을 떠났습니다. , 생성한 최대값에 NULL이 할당됨 - 직접 제거함))

고마워, 생각해 볼게

예, 개체에 대한 슬픈 암시적 참조는 코드의 야생에서 살아 남았고(예: 일부 대리자의 호출 시트에서 메서드 호출) 이동했으며 메모리가 흐릅니다. 예리하게, 또한 하나 또는 둘로 자릅니다.