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

 
모두들 안녕. MT5에서 서버와의 연결이 끊어졌을 때 프로그래밍 방식으로 계정을 다시 로그인할 수 있습니까?
 

컴파일 오류:

 class A
{ 
};

template < typename T>   void func(T * const &a[])  { } 


void OnStart ()
  {
    A * const a[] = { NULL };
    func(a);       //   'a' - cannot convert from const pointer to nonconst pointer
  }
 

몇 가지 오류가 더 있습니다.

 template < typename T> void F(T)
{
   class A
  {
     void f()  { new A; }   // 'A' - declaration without type
        
     void g()  { A* a; }   // 'A' - pointer to this function type is not supported yet
  };
};


void OnStart ()
  {
    F( 0 );
  }
 

또한 포인터 캐스팅이 너무 똑똑했습니다.

다음 코드는 컴파일되지 않습니다.

 class A
{
};

class B : protected A
{
};

void OnStart ()
  {
    A* a;
    B* b= (B*)a;   // conversion from 'B *' to 'A *' is not accessible because of inheritance access
  }

캐스트가 명시적이지만. 모든 것이 C++에서 작동합니다.

 
Alexey Navoykov :

또한 포인터 캐스팅이 너무 똑똑했습니다.

맞습니다. 컴파일러는 맹세합니다.
 
Комбинатор :
맞습니다. 컴파일러는 맹세합니다.
그러면 무엇이 옳은가? C++를 열고 어떻게 되어야 하는지 확인하십시오.
 
Alexey Navoykov :
dynamic_cast, static_cast 및 reinterpret_cast에 대해 읽고 올바르게 사용해야 하는 경우와 사용하지 않는 경우에 대해 읽어보십시오.
 
Комбинатор :
dynamic_cast, static_cast 및 reinterpret_cast에 대해 읽고 올바르게 사용해야 하는 경우와 사용하지 않는 경우에 대해 읽어보십시오.
불필요한 범람과 철학 없이 합시다. 우리는 컴파일해야 하는 특정 구성에 대해 이야기하고 있습니다.
 
Alexey Navoykov :

C++는 이 코드를 reinterpret_cast로 변환하고 MQL을 dynamic_cast로 변환합니다. 그리고 내가 이해하는 한 이것은 컴파일러가 컴파일 중에 캐스트 스피커 오류를 찾을 수 있는 경우입니다.

이 경우 reinterpret_cast는 불법이므로 이 코드가 C++로 컴파일된다는 사실은 인수가 아닙니다.

 
Комбинатор :

C++는 이 코드를 reinterpret_cast로 변환하고 MQL을 dynamic_cast로 변환합니다. 그리고 내가 이해하는 한 이것은 컴파일러가 컴파일 중에 캐스트 스피커 오류를 찾을 수 있는 경우입니다.

이 경우 reinterpret_cast는 불법이므로 이 코드가 C++로 컴파일된다는 사실은 인수가 아닙니다.

잠깐, 왜 모든 것을 섞고 있습니까? 그리고 여기 스피커 캐스트가 있습니까? 컴파일러의 작업에는 셜록 홈즈를 재생하고 프로그램 논리에서 무언가를 찾는 작업이 포함되지 않습니다. 언어 표준 준수에 대한 공식적인 검사만 수행하며 그 이상은 수행하지 않습니다. 그리고 표준의 관점에서 볼 때 모든 것이 나에게 맞습니다.

더욱이 여기서 요점은 전혀 캐스팅에 있지 않습니다. 내 예를 주의 깊게 살펴보면 보호와 관련된 문제가 있음을 알 수 있습니다. public으로 바꾸면 모든 것이 정상입니다. 개체 자체는 변경되지 않습니다. 저것들. MQL 컴파일러에서는 불필요한 제한일 뿐입니다.

그러므로 분명히 존재하지 않는 곳에서 은밀한 의미를 추측하고 찾지 마십시오. 그리고 평범한 컴파일러 오류만 있습니다.