MQL5의 OOP에 대한 질문 - 페이지 14 1...789101112131415161718192021...96 새 코멘트 Dmitry Fedoseev 2019.07.05 15:44 #131 TheXpert : 또한 중재자의 지도하에 누가 후견인에 대해 이야기할까요 ...하지만 두 개의 에카넛을 가진 캐릭터는 ... Vladimir Simakov 2019.07.05 15:44 #132 TheXpert : 또한 중재자의 지도하에 네, 제가 직접 게시물을 삭제했습니다. Dmitry Fedoseev 2019.07.05 15:48 #133 Vladimir Simakov : 네, 제가 직접 게시물을 삭제했습니다. 이것은 new를 통해 함수에서 객체가 생성되는 경우였습니다. 그리고 처음에는 기존 개체에 대한 포인터를 전달할 필요성에 대한 대화가 있었습니다. 따라서 다음과 같이 전달할 수 있습니다. 무효 f(CObj * obj){} Vasiliy Sokolov 2019.07.05 15:55 #134 Dmitry Fedoseev : 그리고 함수에서 객체를 생성하기 위해 함수에 대한 포인터를 전달해야 하는 경우 작동 방식은 다음과 같습니다. class CObj{ public : int f(){ return ( 33 ); } }; CObj * obj; void OnStart (){ z(obj); delete (obj); } void z(CObj & o){ o = new CObj(); } 그것이 실제로 당신이 OOP에 대해 알고 싶었지만 물어보기가 두려웠던 모든 것입니다))) 이 코드는 내 터미널을 쫓아냅니다. 기껏해야 디버깅에 치명적인 오류가 발생합니다(애니메이션을 보려면 그림 클릭). 컴파일러가 그러한 구성을 건너뛰는 것은 이상합니다. Roman 2019.07.05 15:58 #135 얘들아, 특히 갑자기 말다툼을하지 마라. Dmitry는 오류가 있는 첫 번째 예를 제시했는데 무엇이 잘못되었습니까? Dim, 네, 오류 없이 컴파일되지만 스크립트를 실행하면 오류가 발생합니다. Vladimir는 그것을 수정하고 포인터를 추가했는데 코드가 올바르게 작동했습니다. 다른 무엇을합니까? 이제 누가 가장 멋진 고추인지 분류해 볼까요? )))) 여러분, 서로를 존중하고 오만함으로 인신공격과 모욕을 받지 마십시오. Dmitry의 초기 예 class CObj{ public : int f(){ return ( 33 ); } }; CObj * obj; void OnStart (){ z(obj); delete (obj); } void z(CObj & o){ //тут пропущен указатель o = new CObj(); } 블라디미르의 수정 void z(CObj* &o){ //добавлен указатель o = new CObj(); } 확인을 위해 방법의 결과를 인쇄하여 내 조정 이 예제가 작동하고 있습니다. 그 밖에 무엇이 필요합니까? 누가 더 멋지고 그렇지 않은지 분류하지 마십시오. 모든 사람은 오타와 실수가 있습니다. class CObj { public : int f(){ return ( 33 );} }; void z(CObj* &o) { o = new CObj(); Print (o.f()); } CObj * obj; //+------------------------------------------------------------------+ void OnStart () { z(obj); delete (obj); } 내 의견으로는 이러한 논쟁의 입력으로 컴파일러 오류가 드러났습니다. 컴파일러가 Dmitry의 초기 예제에서 오류 없이 컴파일을 건너뛰는 이유는 무엇입니까? Vladimir Simakov 2019.07.05 15:58 #136 Vasiliy Sokolov : 이 코드는 내 터미널을 쫓아냅니다. 기껏해야 디버깅에서 치명적인 오류가 발생합니다. 컴파일러가 그러한 구성을 건너뛰는 것은 이상합니다. 컴파일러의 경우 모든 것이 여기에서 유효합니다. 프로그램의 데이터 세그먼트에 있는 개체에 대한 포인터가 생성되었으며 컴파일하는 동안 0x0으로 초기화되었습니다. 프로세서에 필요한 명령은 코드 세그먼트에서 생성됩니다. 실행하는 동안 함수 z(...)의 주소에 있는 명령이 스택에 푸시됩니다. 그리고 거기에서 rdx [0x0]을(를) 이동합니다. 그리고 제로 메모리 주소에 대한 액세스는 금지됩니다. 널 포인터 역참조가 호출됩니다. Vasiliy Sokolov 2019.07.05 16:00 #137 Vladimir Simakov : 컴파일러의 경우 모든 것이 여기에서 유효합니다. 어떤 컴파일러를 위해? Dmitry Fedoseev 2019.07.05 16:03 #138 Vasiliy Sokolov : 이 코드는 내 터미널을 쫓아냅니다. 기껏해야 디버깅 시 치명적인 오류가 발생합니다(애니메이션을 보려면 그림을 클릭하십시오). 컴파일러가 그러한 구성을 건너뛰는 것은 이상합니다. 그리고 그것은 나를 위해 컴파일되고 올바르게 작동하지만 작업이 완료되면 메모리 누수에 대한 메시지가 표시됩니다(삭제가 작동하지 않음). Vasiliy Pushkaryov 2019.07.05 16:06 #139 Igor Makanu : 이제 당신이 그에게 나쁜 것을 가르친다면 그것을 알아내는 것이 좋을 것입니다))) #define private protected 당신이 fxsaber 코드와 함께 앉아 있었던 것은 당연합니다. 나에게 이것은 걸작이다. Vasiliy Pushkaryov 2019.07.05 16:19 #140 잘못된 정보에 대해 사과드립니다. 이전에 자식 클래스에서 Create() 메서드를 호출하는 것이 불가능하다고 썼습니다. 지금 확인해보니 가능합니다. 그러나 비공개 멤버 m_button에 대한 액세스는 사용할 수 없었습니다. 저것들. 예를 들어 버튼의 상태 를 확인하는 것은 불가능했습니다. Igor의 힌트로 이제 가능합니다. #define private protected #include <Controls\Button.mqh> class CMyButton : public CButton { public : CMyButton( void ){}; ~CMyButton( void ){}; bool isPrevState; // состояние кнопки на предыд.тике, true - была нажата void setButton(); // создаем кнопку }; void CMyButton::setButton( void ) { // метод Create() вызывается Create( 0 , "setBtn" , 0 , 50 , 300 , 150 , 325 ); Text( "setBtn" ); m_button.State(); // работает когда включаем #define private protected } 1...789101112131415161718192021...96 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
또한 중재자의 지도하에
누가 후견인에 대해 이야기할까요 ...하지만 두 개의 에카넛을 가진 캐릭터는 ...
또한 중재자의 지도하에
네, 제가 직접 게시물을 삭제했습니다.
이것은 new를 통해 함수에서 객체가 생성되는 경우였습니다. 그리고 처음에는 기존 개체에 대한 포인터를 전달할 필요성에 대한 대화가 있었습니다. 따라서 다음과 같이 전달할 수 있습니다.
무효 f(CObj * obj){}
그리고 함수에서 객체를 생성하기 위해 함수에 대한 포인터를 전달해야 하는 경우 작동 방식은 다음과 같습니다.
그것이 실제로 당신이 OOP에 대해 알고 싶었지만 물어보기가 두려웠던 모든 것입니다)))이 코드는 내 터미널을 쫓아냅니다. 기껏해야 디버깅에 치명적인 오류가 발생합니다(애니메이션을 보려면 그림 클릭).
컴파일러가 그러한 구성을 건너뛰는 것은 이상합니다.
Dmitry는 오류가 있는 첫 번째 예를 제시했는데 무엇이 잘못되었습니까?
Dim, 네, 오류 없이 컴파일되지만 스크립트를 실행하면 오류가 발생합니다.
Vladimir는 그것을 수정하고 포인터를 추가했는데 코드가 올바르게 작동했습니다.
다른 무엇을합니까? 이제 누가 가장 멋진 고추인지 분류해 볼까요? ))))
여러분, 서로를 존중하고 오만함으로 인신공격과 모욕을 받지 마십시오.
Dmitry의 초기 예
블라디미르의 수정
확인을 위해 방법의 결과를 인쇄하여 내 조정
이 예제가 작동하고 있습니다. 그 밖에 무엇이 필요합니까?
누가 더 멋지고 그렇지 않은지 분류하지 마십시오. 모든 사람은 오타와 실수가 있습니다.
내 의견으로는 이러한 논쟁의 입력으로 컴파일러 오류가 드러났습니다.
컴파일러가 Dmitry의 초기 예제에서 오류 없이 컴파일을 건너뛰는 이유는 무엇입니까?
이 코드는 내 터미널을 쫓아냅니다. 기껏해야 디버깅에서 치명적인 오류가 발생합니다.
컴파일러가 그러한 구성을 건너뛰는 것은 이상합니다.
컴파일러의 경우 모든 것이 여기에서 유효합니다.
프로그램의 데이터 세그먼트에 있는 개체에 대한 포인터가 생성되었으며 컴파일하는 동안 0x0으로 초기화되었습니다.
프로세서에 필요한 명령은 코드 세그먼트에서 생성됩니다.
실행하는 동안 함수 z(...)의 주소에 있는 명령이 스택에 푸시됩니다.
그리고 거기에서 rdx [0x0]을(를) 이동합니다.
그리고 제로 메모리 주소에 대한 액세스는 금지됩니다. 널 포인터 역참조가 호출됩니다.
컴파일러의 경우 모든 것이 여기에서 유효합니다.
어떤 컴파일러를 위해?
이 코드는 내 터미널을 쫓아냅니다. 기껏해야 디버깅 시 치명적인 오류가 발생합니다(애니메이션을 보려면 그림을 클릭하십시오).
컴파일러가 그러한 구성을 건너뛰는 것은 이상합니다.
그리고 그것은 나를 위해 컴파일되고 올바르게 작동하지만 작업이 완료되면 메모리 누수에 대한 메시지가 표시됩니다(삭제가 작동하지 않음).
이제 당신이 그에게 나쁜 것을 가르친다면 그것을 알아내는 것이 좋을 것입니다)))
당신이 fxsaber 코드와 함께 앉아 있었던 것은 당연합니다. 나에게 이것은 걸작이다.
잘못된 정보에 대해 사과드립니다. 이전에 자식 클래스에서 Create() 메서드를 호출하는 것이 불가능하다고 썼습니다.
지금 확인해보니 가능합니다. 그러나 비공개 멤버 m_button에 대한 액세스는 사용할 수 없었습니다. 저것들. 예를 들어 버튼의 상태 를 확인하는 것은 불가능했습니다.
Igor의 힌트로 이제 가능합니다.