MQL4에서 싱글톤 패턴을 구현할 수 있습니까? - 페이지 7

 
ALXIMIKS :

응 뭔가 해? 하나의 전역 클래스 개체를 생성하면 됩니다. (oh-yo-yo-th - 구조 , 그러면 다시 자신의 것을 이해하고 공격할 것입니다)

그리고 클래스와 구조를 우회하여 "올인원"으로 작성할 수도 있습니다. 절차상으로도. 내 맘대로 써, 나에게 바라는 게 뭐야?

Stroustrup은 여전히 시도를 가르칩니다. 그에게 불필요한 것들을 많이 생각해 냈다는 편지를 쓰십시오. 모두가 자신의 것을 선택하고 모두가 원하는대로 씁니다. 특정 작업의 수행에 따라 모든 것이 나뉩니다. 모든 것을 배포하고 그것을 작품이라고 부르는 것. 그러나 이러한 코드 조각이 "블랙박스"로 바뀌면 매우 편리합니다. 특히 당신이 그것을 넣을 때 불필요한 것이 많지 않을 때 :

알시믹스 :

4) 데이터의 정확도가 높을 수 있지만 문제는 개발자에게 있습니다.

그건 그렇고, 개발자는 그것과 아무 관련이 없습니다. 그 순간이 아닙니다.

여기 내 질문이 있습니다. 설명서에 아무데도 없는데 왜 이렇게 차이가 나는지...

 
hoz :
그리고 문서에 따라 클래스에 대해 이것이 수행되지 않는 이유는 무엇입니까? 왜 클래스의 각 멤버를 꺼내서 초기화합니까?

또 징그럽다. :)

우리에게 무엇을 원하십니까?

 
_new-rena :
나는 화면이 당신이 필요로하는 컬렉션에 대한 패턴 (?) ....을 읽고 희망합니다 ...

미안 해요, 여기 프로그래밍은 "외톨이"... 사라졌습니다.
 

나는 여전히 그 구절을 이해하지 못했기 때문에 참조는 여전히 어떻게 든 비참하다.

클래스 멤버를 정적으로 선언할 수 없으면 프로그램의 전역 수준 에서 이 데이터를 선언해야 합니다.

누가 이해하고 그들이 말하고 싶었던 것을 설명합니까?

 
keekkenen :

누가 이해하고 그들이 말하고 싶었던 것을 설명합니까?

이것은 mql의 시원함에 의해 촉진되었습니다.

문구에 신경쓰지 마세요

 
keekkenen :

클래스 멤버를 정적으로 선언할 수 없으면 프로그램의 전역 수준 에서 이 데이터를 선언해야 합니다.

누가 이해하고 그들이 말하고 싶었던 것을 설명합니까?


대신에:

 class CClass
{
   static int m_a;
};

하나는 다음을 사용해야 합니다.

 int g_a;

더욱이, 첫 번째 경우에 m_a는 CClass 클래스의 인스턴스에서만 사용할 수 있고 두 번째 경우에는 프로그램의 모든 부분에서 사용할 수 있습니다.

 
Scriptong :


대신에:

하나는 다음을 사용해야 합니다.

더욱이, 첫 번째 경우에 m_a는 CClass 클래스의 인스턴스에서만 사용할 수 있고 두 번째 경우에는 프로그램의 모든 부분에서 사용할 수 있습니다.


장점/차이점을 못느끼겠습니다

 class CClass
{
   static int m_a;
};

~ 전에

 class CClass
{
   public :
     int m_a;
};

그것은 말에 관한 것이 아니라 그것이 의미하는 바에 관한 것입니까?!

 
keekkenen :

장점/차이점을 못느끼겠습니다

네임스페이스의 첫 번째 유사체.
 
keekkenen :


장점/차이점을 못느끼겠습니다

우리는 정적 클래스 멤버 에 대해 이야기하고 있었습니다. 또한 내 예에서 m_a는 개인 구성원입니다. 그리고 그러한 클래스 멤버는 클래스의 인스턴스에서만 액세스할 수 있습니다. 따라서 클래스 인스턴스를 제외하고 코드의 어느 곳에서도 변수 값을 변경할 수 없습니다. 이것은 미래에 가능한 많은 버그를 제거하는 보안 코드를 작성하는 문제입니다.
 

누군가 싱글톤에 대해 외쳤습니다.

 class SomeClass{
public :
   int a;
};

class Singleton{
protected :
         static SomeClass* _self;
        Singleton(){}
         virtual ~Singleton(){}   
public :
         static SomeClass* Instance(){
                 if (_self == NULL ){
                        _self = new SomeClass();
                }
                 return _self;
        } 
         static void DeleteInstance(){
                         delete _self;
        }
};
 
SomeClass* Singleton ::_self = NULL ;

void OnStart ()
{       
        SomeClass* some_ptr = Singleton::Instance();
         Alert (some_ptr.a);                              // Alert (Singleton::Instance().a); // або просто так
        Singleton::DeleteInstance();
}

그리고 템플릿을 클래스로 확장하고 매개변수를 명시적으로 설정할 계획입니까? 그리고는 내가 정말 많이 원한다고 욕을 한다.

추신, Singleton 내부에 SomeClass 클래스 선언하는 것이 더 정확합니다.    생성될 수 있음), 그러나 사실은 아니지만 어떻게든 더 명확하게