오류, 버그, 질문 - 페이지 2709

 
Stanislav Korotky :

MQL의 자체 팩토리 메소드에서 보호된 생성자를 호출할 수 없는 이유는 무엇입니까?

문제는 기본값입니다. 제거하면 모든 것이 정상적으로 작동합니다.

 class A1
{
   protected :
    A1( const bool x = false ){}
   public :  
     static A1 *creator()
    {
       return new A1( true );
    }
};

void OnStart ()
{
  A1 *a = A1::creator();
}
 
Stanislav Korotky :

MQL의 자체 팩토리 메소드에서 보호된 생성자를 호출할 수 없는 이유는 무엇입니까?

나는 이것이 어디에 유용할 수 있는지 추측하지 못했다.

 
fxsaber :

나는 이것이 어디에 유용할 수 있는지 추측하지 못했다.

Singleton 패턴의 고전적인 구현입니다.

 
Sergey Dzyublik :

Singleton 패턴의 고전적인 구현입니다.

주어진 클래스의 특정 수 이상의 객체를 생성하는 것을 불가능하게 하려면?

 
fxsaber :

주어진 클래스의 특정 수 이상의 객체를 생성하는 것을 불가능하게 하려면?

예, 프로그램의 모든 부분에서 상태 저장 클래스의 인스턴스에 대한 단일 액세스 지점이 있습니다.
다음은 사진 및 의사 코드의 패턴에 대해 오늘 찾은 멋진 사이트입니다. https://refactoring.guru/en/design-patterns/singleton

Одиночка
Одиночка
  • refactoring.guru
Одиночка — это порождающий паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Проблема Одиночка решает сразу две проблемы, нарушая принцип единственной ответственности класса. Гарантирует наличие единственного экземпляра класса. Чаще всего это полезно для...
 
Sergey Dzyublik :

예, 프로그램의 모든 부분에서 상태 저장 클래스의 인스턴스에 대한 단일 액세스 지점이 있습니다.
다음은 사진 및 의사 코드의 패턴에 대해 오늘 찾은 멋진 사이트입니다. https://refactoring.guru/ru/design-patterns/singleton

이해했습니다 감사합니다. 이 디자인을 사용한 적이 있습니다.

 template < typename T>
struct PTR
{
  T* Ptr;

  PTR( void ) : Ptr( NULL )
  {
  }

  PTR( T* ptr ) : Ptr(ptr)
  {
  }

  ~PTR( void )
  {
     if ( this .Ptr)
       delete this .Ptr;
  }

   bool Set( T* ptr )
  {
     this .Ptr = ptr;

     return ( true );
  }

   void operator =( bool )
  {
  }
};

class CLASS
{
private :
#define THIS CLASS::sPtr.Ptr
   static PTR<CLASS> sPtr;

  CLASS( const bool x /* = false */ )
  {
  }
    
   static bool Set()
  {
     return (THIS ? false : CLASS::sPtr.Set( new CLASS( true )));
  }  
#undef THIS  
};

// Создается скрытый объект CLASS со скрытым конструктором.
// Ни создать CLASS-объект, ни обратиться к существующему нельзя
static PTR<CLASS> CLASS::sPtr = CLASS::Set();
 
Sergey Dzyublik :

문제는 기본값입니다. 제거하면 모든 것이 정상적으로 작동합니다.

그러나 C++에서는 기본값으로도 작동합니다. 그리고 어떤 영향을 미치나요?

 

웹 소켓에서 수축 압축을 사용하여 MQL CryptEncode (CRYPT_ARCH_ZIP, data[], key[] = {1,0,0,0}, result[])와 친구가 된 사람이 있습니까? 공개 에코 서버(echo.websocket.org)는 이 확장을 지원하지 않는 것 같고, 다른 에코 서버를 찾지 못했고, 로컬 node.js는 압축된 압축을 해독하려고 할 때 "zlib invalid distance too far back" 오류를 표시합니다. 데이터. 헤더에서 최대 server_max_window_bits=15를 설정했습니다. client_max_window_bits=15 서버는 이러한 설정을 확인합니다. 그리고 MQL 측에서는 {1,0,0,0} 키만 구성할 수 있습니다. ;-(.

 
Stanislav Korotky :

웹 소켓에서 수축 압축을 사용하여 MQL CryptEncode(CRYPT_ARCH_ZIP, data[], key[] = {1,0,0,0}, result[])와 친구가 된 사람이 있습니까? 공개 에코 서버(echo.websocket.org)는 이 확장을 지원하지 않는 것 같고, 다른 에코 서버를 찾지 못했고, 로컬 node.js는 압축된 압축을 해독하려고 할 때 "zlib invalid distance too far back" 오류를 표시합니다. 데이터. 헤더에서 최대 server_max_window_bits=15를 설정했습니다. client_max_window_bits=15 서버는 이러한 설정을 확인합니다. 그리고 MQL 측에서는 {1,0,0,0} 키만 구성할 수 있습니다. ;-(.

질문을 올바르게 이해하면 데이터 패키징을 위한 웹 소켓에서 주로 GZIP 압축을 사용합니다.
CRYPT_ARCH_ZIP 상수는 일반 ZIP으로 압축될 가능성이 큽니다.
mql5를 사용하여 GZIP을 압축/해제하는 방법을 알고 있다면 저도 관심이 있습니다.

 
Roman :

질문을 올바르게 이해하면 데이터 패키징을 위한 웹 소켓에서 주로 GZIP 압축을 사용합니다.
CRYPT_ARCH_ZIP 상수는 일반 ZIP으로 압축될 가능성이 큽니다.
mql5를 사용하여 GZIP을 압축/해제하는 방법을 알고 있다면 저도 관심이 있습니다.

내가 아는 한 {1,0,0,0} 키는 모든 프레이밍을 제거하고 압축된 패킷만 남깁니다. 최소한 "Hello"라는 단어는 수축할 때와 마찬가지로 CryptEncode 출력에서도 동일한 방식으로 압축됩니다. 따라서 반대 방향으로 작동해야 합니다. 그러나 MQL은 더 이상 설정을 제공하지 않으며 사용하는 "기본" 수축 설정을 표시하지 않습니다. 분명히 그것들은 다르지만 max_window_bits와 no_context_takeover만 웹 소켓에서 제어할 수 있습니다. 첫째, deflate 알고리즘(서버에서 구성됨)보다 분명히 적고, 둘째, CryptEncode/에서도 구성할 수 없습니다. 풀다.