OOP, mql5의 템플릿 및 매크로, 미묘함 및 사용 기술 - 페이지 3

 
Алексей Тарабанов :

당신은 그것을 만드는 방법을 찾았습니다.

당신은 뭔가를 혼동하고 있습니다.
 
Ilya Malev :

이 클래스의 인스턴스가 하나 이상 생성되기 전에 초기화 단계에서 클래스의 정적 필드 를 사용하려고 합니다. 제 생각에는 이것은 변태입니다 ... 이것이 모든 것이 잘 작동하는 방법입니다.

캡슐화 원칙은 일반적으로 이러한 필드가 공개가 아닌 비공개여야 한다고 제안합니다.

정적 필드는 클래스 인스턴스의 존재에 의존하지 않도록 정적 필드입니다. 그러나 클래스의 인스턴스를 먼저 생성하려면 - 좋습니다. 생성하되 함수 내부에서만 생성합니다. 그리고 그에게이 필드에 대해 물어보십시오 (적어도 직접적으로, 적어도 방법을 통해) - 결과는 다시 동일합니다.

 
Alexey Navoykov :
당신은 뭔가를 혼동하고 있습니다.

아니, 나는 아무것도 혼동하지 않습니다.

먼저 전역 변수, 정적 변수, 코드에 나타나는 지역 변수 순입니다.

함수에 의한 변수 초기화 를 방지하기 위한 문서의 권장 사항을 위반한 것은 이 예제입니다. 개발자가 그러한 경고를 작성하는 것이 어디가 가능하고 어디가 불가능한지를 설명하는 것보다 쉬웠습니다.

예제에서 정적을 제거하고 원하는 결과를 얻으십시오.

 
Алексей Тарабанов :

아니, 나는 아무것도 혼동하지 않습니다.

먼저 전역 변수, 정적 변수, 코드에 나타나는 지역 변수 순입니다.

함수에 의한 변수 초기화 를 방지하기 위한 문서의 권장 사항 을 위반한 것은 이 예제입니다. 개발자가 그러한 경고를 작성하는 것이 어디가 가능하고 어디가 불가능한지를 설명하는 것보다 쉬웠습니다.

예제에서 정적을 제거하고 원하는 결과를 얻으십시오.

"문서 권장 사항")) 나는 당신과 섹스합니다. 아직도 본질을 이해하지 못하느냐? 언어의 버그. 개발자 자신이 이것에 대해 이야기하고이 버그에 걸리지 않도록 탬버린으로 적절하게 춤을 추는 방법을 설명합니다. 이 버그를 한 번에 완전히 잊는 방식으로 했습니다.
 
Alexey Navoykov :

필요는 없지만 나에게는 더 편리합니다. 이것이 상수인 경우(그리고 전역 가시성에서 코드를 읽을 수 있는 경우 대부분 상수가 선언됨) 다른 선택은 없습니다.

노란색으로 강조 표시된 모든 항목에 대해 한 가지 질문이 있습니다. 왜? 나는 이미 문제를 해결하는 방법을 찾았습니다.

그런 다음 이미 쌓은 정원에 울타리를 치는 일이 없도록 하십시오.

 
Alexey Navoykov :
"문서 권장 사항")) 나는 당신과 섹스합니다. 아직도 본질을 이해하지 못하느냐? 언어의 버그. 개발자 자신이 이것에 대해 이야기하고이 버그에 걸리지 않도록 탬버린으로 적절하게 춤을 추는 방법을 설명합니다. 이 버그를 한 번에 완전히 잊는 방식으로 했습니다.

함수로 무언가의 가치를 시작할 수 없습니다. 당신이 정말로 원하더라도. 정말, 명확하지 않습니까?

 
Alexey Navoykov :

정적 필드는 클래스 인스턴스의 존재에 의존하지 않도록 정적 필드입니다. 그러나 클래스의 인스턴스를 먼저 생성하려면 - 좋습니다. 생성하되 함수 내부에서만 생성합니다. 그리고 그에게이 필드에 대해 물어보십시오 (적어도 직접적으로, 적어도 방법을 통해) - 결과는 다시 동일합니다.

그렇다면 여전히 절차적 또는 객체 지향 프로그래밍이 있습니까? 게다가 왜 갑자기 초기화 전 단계에서 전형화된 객체와 관련하여 클래스와 관련 없는 기능을 수행하는가? 대답은 "당신이 원하기 때문에"인 것으로 이해합니다. 그러나 내가 개발자라면 모든 것을 취소하고 이 특정 동작을 수정하기 위해 서두르지 않을 것입니다. 이것은 다소 주변적인 아키텍처이고 게다가 클래스의 인스턴스를 생성하여 문제를 쉽게 해결할 수 있기 때문입니다. 물론 함수 내부는 아닙니다.

 
Alexey Viktorov :

그런 다음 이미 쌓은 정원에 울타리를 치는 일이 없도록 하십시오.

글쎄, 나는 이미 그것을 쌓았고 조금도 후회하지 않는다) 그리고 당신, 알다시피, MQ에 의해 부과된 인위적인 제한으로 자신을 속박하는 것은 정말 즐거운 일입니다. 아마도 당신은 마조히스트입니까? ) 네, 그리고 이것이 정확히 필요한 것이라고 저를 설득하기 위해 끈질기게 노력하고 있습니다. 그것은 필요하지 않습니다, 그것은 강제입니다.
 
Алексей Тарабанов :

함수로 무언가의 가치를 시작할 수 없습니다. 당신이 정말로 원하더라도. 정말, 명확하지 않습니까?

예, 명확하지 않습니다. 설명하다.
 
Ilya Malev :

그렇다면 여전히 절차적 또는 객체 지향 프로그래밍이 있습니까? 게다가 왜 갑자기 초기화 전 단계에서 전형화된 객체와 관련하여 클래스와 관련 없는 기능을 수행하는가? 대답은 "당신이 원하기 때문에"인 것으로 이해합니다. 그러나 내가 개발자라면 서두르지 않고 모든 것을 취소하고 이 특정 동작을 수정하기 위해 실행하지 않을 것입니다. 이것은 다소 한계가 있는 아키텍처이고 게다가 . 물론 함수 내부가 아닙니다 .

저것들. 당신은 내가 이해하는 대로 전역 변수 의 대량 사용을 지지합니다. 그러면 당신과 나는 서로를 이해하지 못할 것입니다.

또한 기능 자체를 템플릿화할 수 있습니다. 그리고 생성된 인스턴스는 그에 따라 동일한 유형으로 매개변수화되어야 합니다.

 template < typename T>
int f()
{  
  A<T> a;
   return a.f();
}

당신의 행동은?