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

 
Renat Fatkhullin :

빌드 1711, 1709 및 1700에서 동일한 오류가 관찰되었지만 이전에는 인식하지 못했습니다.

- 요청이 기록에 없는 바 의 여는 시간에 대한 것이라면 CopyTime은 알 수 없는 시간 동안 멈춥니다. 예를 들어 바의 여는 시간을 요청합니다.

 CopyTime (_ticker, _tf, _start, _stop, _buff)
где:
_ticker == RTS- 9.12
_tf == PERIOD_M1
_start == D'2017.09.20 19:01'
_stop == D'2017.09.20 19:00'
_buff == динамический массив типа datetime

하지만 때문에 저녁 세션은 그날 19:05로 이동되었으며 이 기간 동안 기록에 막대가 없으며 함수를 호출한 후 제어가 프로그램으로 다시 전송되지 않고 중단됩니다.

이론적으로 함수는 오류와 함께 종료되어야 합니다.

 

런타임 에러

 typedef void (*fn)();
struct A {
        fn a;
};
struct B : A {
        void a() {}
};
void OnStart ()
{
        B b;
        b.a(); //error: invalid function pointer call
}
typedef void (*fn)();
void g() {}
struct A {
        A() : a( g ) {}
        fn a;
};
struct B : A {
         void a() {}
};
void OnStart ()
{
        B b;
        b.a(); //вместо B::a() вызывается g()
}
 

컴파일 중 오류

 typedef void (*fn)();
struct A {
        fn a;
};
struct B : A {
        void a( int ) {}
};
void OnStart ()
{
        B b;
        b.a( 2 ); //error: '2' - wrong parameters count
}

 
정적 변수의 뉘앙스가 기억나지 않습니다. 이 새끼가 왜 그런 걸 내놓는지 상기시켜주세요.
 class A
{
public :
  A()
  {
    A::f();
  }
  
   static void f()
  {
     static bool Tmp = true ;
    
     Print (Tmp);
  }
};

void OnStart ()
{
   static A a; // static - false, иначе - true;
}
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

A100 , 2017.12.19 23:04

런타임 에러

 typedef void (*fn)();
struct A {
        fn a;
};
struct B : A {
        void a() {}
};
void OnStart ()
{
        B b;
        b.a(); //error: invalid function pointer call
}
void g() {}
void OnStart ()
{
        B b;
        b.a = g;
        b.a(); //вместо B::a() вызывается g()
}

두 경우 모두 이해할 수 있는 이유가 있는 것 같습니다. 필드와 메서드의 이름이 같으므로 필드와 메서드에 대한 액세스가 완전히 동일합니다. 따라서 컴파일러는 메서드가 아니라 필드를 호출합니다. 첫 번째 경우에는 필드가 설정되지 않았으므로 문제가 됩니다. 두 번째 모든 규범에서 필드가 발생합니다.

따라서 베이스에서 메소드가 선언되고 동일한 이름의 필드가 자손에 선언되면 다른 순서로 처리됩니다.

컴파일러는 이것을 제공했어야 했습니다.

declaration of 'a' hides member declaration at line 3
 
fxsaber :

따라서 컴파일러는 메서드가 아니라 필드를 호출합니다.

필드가 메소드보다 나은 이유는 무엇입니까? 예를 들어 C ++는 필드를 호출하지 않지만 메서드(이는 논리적임)를 호출합니다. 메서드가 파생 클래스 에 있으므로 더 가깝기 때문입니다. 즉, 서명이 파생 클래스에서 완전히 적합하다면 왜 기본 클래스로 이동합니까?

 
A100 :

필드가 메소드보다 나은 이유는 무엇입니까? 예를 들어 C ++는 필드를 호출하지 않지만 메서드(이는 논리적임)를 호출합니다. 메서드가 파생 클래스 에 있으므로 더 가깝기 때문입니다. 즉, 서명이 파생 클래스에서 완전히 적합하다면 왜 기본 클래스로 이동합니까?

항상 컴파일러의 경고가 수반되어야 하는 인위적인 상황을 만들었다는 것을 이해합니다.

"더 가까이"라는 주제에 대해

fxsaber :

기본에 메서드를 선언하고 자식에 대해 동일한 이름을 가진 필드를 선언하면 다른 순서로 처리됩니다.

 
fxsaber :
정적 변수의 뉘앙스가 기억나지 않습니다. 이 새끼가 왜 그런 걸 내놓는지 상기시켜주세요.

전체 문제는 변수 초기화 순서와 코드 실행 순서에 있습니다.

이것은 말로 설명하는 것보다 단계별 디버깅 모드에서 이해하기 쉽습니다.

 

프리랜서 작업의 이상한 버그.

4개의 작업이 진행되었습니다. 나는 1을 취했다 5가 되었다 합격 1을 남겼다 5

사실 4 작품 5 를 씁니다 . 다른 쓰기 를 했다 6 . 실제로 4개를 건네주었지만 그 과정에서 6개

실제로 5개의 작품을 하나 더 가져갔지만 "진행 중" 7

이제 5개만 있어도 취직이 안 돼요.

요청 번호

1913868  

 
Aleksei Beliakov :

프리랜서 작업의 이상한 버그.

4개의 작업이 진행되었습니다. 나는 1이 되었다 5가 되었다 합격 1이 남았다 5

사실 4 작품 5 를 씁니다 . 다른 쓰기 를 했다 6 . 실제로 4개를 건네주었지만 그 과정에서 6개

실제로 5개의 작품을 하나 더 가져갔지만 "진행 중" 7

이제 직업이 5개만 있어도 취직할 수 없습니다.

요청 번호

1913868  

신고해 주셔서 감사합니다. 문제를 해결하기 위해 노력하고 있습니다.

사유: