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

 

여러분, 개발자 여러분, 언어에 속성 을 추가하여 언어의 편의성을 크게 높이는 방법은 무엇입니까? https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx

그런 다음 setter, getter 및 대괄호와의 끊임없는 춤은 매우 성가십니다.

 
Alexey Navoykov :

여러분, 개발자 여러분, 언어에 속성 을 추가하여 언어의 편의성을 크게 높이는 방법은 무엇입니까? https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx

그런 다음 setter, getter 및 대괄호와의 끊임없는 춤은 매우 성가십니다.

Alexey, 찬성입니다. 하지만 여기에 올 필요는 없지만 투표를 하기 위해서입니다. 여기에 몇 가지 목발이 있습니다. MQL http://rsdn.ru/article/vcpp/props.xml에서 시도하지 않았습니다.
Свойства в С++
  • rsdn.org
В этой статье автор рассматривает различные способы реализации свойств в стиле Visual Basic на C++. Некоторые способы специфичны для Visual C++, тогда как другие годятся для применения в любой программе, написанной на языке C++.
 
Alexey Volchanskiy :
Alexey, 찬성입니다. 하지만 여기에 올 필요는 없지만 투표를 하기 위해서입니다. 여기에 몇 가지 목발이 있습니다. MQL http://rsdn.ru/article/vcpp/props.xml에서 시도하지 않았습니다.

링크의 인코딩에 문제가 있습니다. 나는 단단한 krakozyabry가 나옵니다. 그러나 나는 그것이 무엇에 관한 것인지 이해했고, 이 목발에 대해 읽은 적이 있습니다. 현재 MQL에서 구현되지 않습니다. 캐스트 연산자 오버로딩은 지원되지 않습니다. 그리고 그것은 가치가 없습니다, 너무 목발. 그러나 VS의 일반 기능은 특히 매크로에 래핑된 경우 매우 편리합니다. 그리고 추가 리소스를 소비하지 않습니다. 따라서 MQL에도 속성을 도입해야 할 때입니다. 그리고 어떻게 든 그것들이 없으면 모든 것이 서투른 것처럼 보입니다.

 
Alexey Volchanskiy :

그것을 알아 냈고 MQL4 컴파일러에서 버그를 발견했습니다. 부주의로 인해 2 일 동안 검색이 중단 된 오류가 있습니다 ... 결론은 다음과 같습니다. 가장 간단한 코드를 제공하겠습니다. 컴파일 또는 경고 오류가 발생하지 않고 런타임 오류가 발생합니다.

     double ptest = double (test); // тут должна быть ошибка компиляции!!!  

여기에는 실수가 필요하지 않습니다. 여기 에 명시적 유형 변환이 있습니다 . VS에서는 이와 같을 것입니다.

   double ptest = (double)(int) (test);
근본적으로 무엇을 바꾸겠습니까?
 
A100 :
여기에는 실수가 필요하지 않습니다. 명시적 유형 변환이 있습니다.
명시적으로라도 클래스를 의미 있는 유형으로 캐스팅할 수 없습니다. 확실히 실수입니다.
 
Market Watch 창(MT4, MT5)에서 기호를 정렬하는 방법을 알려주세요. 나는 한 터미널에 아름답게 정렬되어 있고 다른 터미널에는 완전히 엉망입니다. 나는 오랫동안 정렬했습니다. 어떻게했는지 기억이 나지 않습니다. 이것에 대한 문서에서 - 한 번에 하나씩 새로운 장소로 문자를 드래그하는 것 외에는 아무것도 없습니다. 그러나 나는 확실히하지 않았습니다. 전체 목록을 수동으로 정렬하여 스스로 목숨을 끊을 수 있습니다. :-/
 
Vasiliy Sokolov :
명시적으로라도 클래스를 의미 있는 유형으로 캐스팅할 수 없습니다. 확실히 실수입니다.

클래스가 아니라 포인터이며 포인터는 숫자입니다.

 class A{};
void f()
{
        A *a;
         int i = int (a);
}

C++는 오류 없이 컴파일됩니다.

double로의 직접적인 명시적 변환을 금지하면 다음 번에 같은 결과를 갖는 double 대신 int를 갖게 되며 다시 컴파일러가 책임을 지게 됩니다. 컴파일러 오류와 오류를 구별해야 합니다.

 
A100 :

클래스는 없지만 포인터이며 포인터는 숫자입니다. 재료를 배우십시오.

C++는 오류 없이 컴파일됩니다.

double로의 직접적인 명시적 변환을 금지하면 다음 번에 같은 결과를 갖는 double 대신 int를 갖게 되며 다시 컴파일러가 책임을 지게 됩니다. 컴파일러 오류와 오류를 구별해야 합니다.

MQL4/5에는 포인터가 없기 때문에 거기에는 포인터가 없습니다. 설명자가 있습니다.

----------------------

서비스 데스크에서 답변을 받았습니다.

지원팀 2015.08.24 09:44
게시해 주셔서 감사합니다. 수정하겠습니다.
실제로 여기 에 컴파일 오류 가 있어야 합니다.


지원팀 2015.08.24 14:39

상태: 열림 닫힘
게시해 주셔서 감사합니다. 수정했습니다. 이제 컴파일러에서 컴파일 오류가 발생합니다.
 
Alexey Volchanskiy :

MQL4/5에는 포인터가 없기 때문에 거기에는 포인터가 없습니다. 설명자가 있습니다.

설명자는 여전히 특정 숫자입니다. 이 숫자가 특정 메모리 영역을 가리키지 않는다는 사실은 숫자의 속성을 박탈하지 않습니다.
 
A100 :
설명자는 여전히 특정 숫자입니다.
물론 "메모리에 저장되는 방식"의 관점에서 보면 맞습니다.
그러나 디스크립터를 숫자로 또는 그 반대로 캐스트하는 것은 이치에 맞지 않으며, 이는 코드의 실수일 가능성이 큽니다.
가까운 장래에 해당 변환 연산자가 클래스에 오버로드되면 호출됩니다.