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

 
fxsaber :
코드 기반에서 눈금 표시기를 설계했습니다 . 하지만 소스를 첨부할 수 없습니다. "파일 첨부"를 클릭하면 비문이 사라지지만 파일 선택 인터페이스는 나타나지 않습니다.
애드블록이 설치되어 있습니까? 모든 팝업 차단
 
Vladislav Andruschenko :
애드블록이 설치되어 있습니까? 모든 팝업을 차단하는

아무것도 변경하지 않았습니다. 모든 것이 이전에 작동했습니다.

체크아웃하는 동안 이 버튼을 클릭합니다.

답은 이것밖에 없다.

 
Sergei Vladimirov :
예, 귀하의 질문을 이해합니다. 더 적절한 서명을 가진 함수가 있지만 보호되어 있기 때문에 호출할 수 없습니다. 예, 동작은 스튜디오와 다릅니다. MKL에는 더 엄격한 유형 제어가 있습니다(이 경우). 이것이 버그로 간주되어야 하는지 모르겠습니다. 함수에 전달된 인수의 유형을 제어하면 문제가 없습니다.

통제는 다소 선택적이고 따라서 더 논쟁의 여지가 있습니다.

class A {
public :
         void f( int ) const {} /*(1)*/         
         void f( int )       {} /*(2)*/
};
class B : public A {
public :
         void f( int ) const {} /*(3)*/
};
void OnStart ()
{
        B b; //не const B
        b.f( 0 ); //(*)

}
여기 (*)에서 (비 const B b를 고려하여) A::f/*(2)*/ 호출이 더 적합합니다.

그러나 C++는 파생 클래스에 올바른 메서드가 있는 경우 항상 기본 클래스를 보다 적절한 메서드로 구문 분석하지 않습니다.

그리고 MQL - 이전 예제에서 더 적합한 메소드를 위해 기본 클래스를 분석했지만, 이 예제에서는 분석하지 않습니다(여기서 C++처럼 B::f/*(3)*/를 호출합니다). 단일 접근 방식이 없음을 의미합니다.

일관성 없는 제어의 또 다른 예: C++는 다음 코드를 찾습니다.

class A { public :
         void f(   int i ) const {}
         void f( uint i )       {}
};
void OnStart()
{
        A a;
        a.f(( int ) 0 );
}
오류 및 MQL - 솔리드
 
A100 :

통제는 다소 선택적이고 따라서 더 논쟁의 여지가 있습니다.

class A {
public :
         void f( int ) const {} /*(1)*/         
         void f( int )       {} /*(2)*/
};
class B : public A {
public :
         void f( int ) const {} /*(3)*/
};
void OnStart ()
{
        B b; //не const B
        b.f( 0 ); //(*)

}
여기 (*)에서 (비 const B b를 고려하여) A::f/*(2)*/ 호출이 더 적합합니다.

그러나 C++는 파생 클래스에 올바른 메서드가 있는 경우 항상 기본 클래스를 보다 적절한 메서드로 구문 분석하지 않습니다.

그리고 MQL - 이전 예제에서 더 적합한 메소드를 위해 기본 클래스를 분석했지만, 이 예제에서는 분석하지 않습니다(여기서 C++처럼 B::f/*(3)*/를 호출합니다). 단일 접근 방식이 없음을 의미합니다.

일관성 없는 제어의 또 다른 예: C++는 다음 코드를 찾습니다.

class A { public :
         void f(   int i ) const {}
         void f( uint i )       {}
};
void OnStart()
{
        A a;
        a.f(( int ) 0 );
}
오류 및 MQL - 솔리드
C++용 컴파일러는 무엇입니까? 나는 gcc를 가지고 있으며 모든 것이 오류없이 실행됩니다.
 
coderex :
C++용 컴파일러는 무엇입니까? 나는 gcc를 가지고 있으며 모든 것이 오류없이 실행됩니다.
그리고 gcc는 결국 어떤 함수를 호출합니까?
class A { public :
         void f(          int i ) const {} //1
         void f( unsigned int i )       {} //2
};
void OnStart ()
{
        A a;
        a.f(( int ) 0 );
}

(1 또는 2). 이제 컴파일러 메시지를 붙여넣겠습니다.

이것은 정말 엄격한 제어입니다. 한 방법은 서명에 의해 더 적합하고 다른 방법은 불변성에 의해

 
A100 :

이것은 정말 엄격한 제어입니다. 한 방법은 서명에 의해 더 적합하고 다른 방법은 불변성에 의해

음, const A;를 만들면 (1)이 호출되어야 합니다. 그렇지 않은 경우 컴파일러의 재량에 따릅니다. 저것들. 확신이 있을 수 없습니다. 그리고 왜 그런 글을 쓰는지는 분명하지 않습니다.
 
fxsaber :
그리고 왜 그런 글을 쓰는지는 분명하지 않습니다.

f -> operator[]를 교체하고 최근의 예를 살펴보십시오. []를 왼쪽과 오른쪽으로 만드는 것을 고려하십시오. 취향에 불변성을 추가하십시오 - 그런 다음 템플릿으로 포장하면 비슷한 것을 얻을 수 있습니다.

If to make const - if 없는 변형이 고려됩니다.

명확성이 없다면 최소한 경고가 발행되어야 합니다.

 
A100 :
f -> operator[]를 교체하고 최근의 예를 살펴보십시오. []를 왼쪽과 오른쪽으로 만드는 것을 고려하십시오. 취향에 불변성을 추가하십시오 - 그런 다음 템플릿으로 포장하면 비슷한 것을 얻을 수 있습니다.
어떤 예를 말씀하시는 건가요? 소스가 아니라 최종 녹음을 가져올 수 있습니까?
 
fxsaber :
어떤 예를 말씀하시는 건가요? 소스가 아니라 최종 녹음을 가져올 수 있습니까?

최종 결과는 다음과 같아야 합니다.

void OnStart ()
{
        A< int > a;
         int b  = a[ 0 ];
        a[ 0 ] = a[ 1 ];
        a[ 1 ] = b;
}
 
A100 :

최종 결과는 다음과 같아야 합니다.

void OnStart ()
{
        A< int > a;
         int b  = a[ 0 ];
        a[ 0 ] = a[ 1 ];
        a[ 1 ] = b;
}
인덱스가 일정합니까?