Hatalar, hatalar, sorular - sayfa 2092

 
Renat Fatkhullin :

yapı 1711, aynı hata 1709 ve 1700'de de gözlendi, daha önce fark edilmedi:

- istek geçmişte olmayan bir barın açılış saati için ise , CopyTime bilinmeyen bir süre için donuyor, örneğin, bir barın açılış saatini istiyorum:

 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

ama çünkü akşam seansı o gün 19:05'e taşındı ve bu süre için geçmişte bar yok, daha sonra fonksiyon çağrıldıktan sonra kontrol programa geri aktarılmıyor ve kilitleniyor.

Her ne kadar teoride, fonksiyon bir hata ile çıkmalıdır.

 

Çalışma hatası

 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()
}
 

Derleme sırasında hata

 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
}

 
Statik değişkenlerle olan nüansı hatırlayamıyorum. Lütfen bana bu piç kurusunun neden böyle bir şey verdiğini hatırlat.
 class A
{
public :
  A()
  {
    A::f();
  }
  
   static void f()
  {
     static bool Tmp = true ;
    
     Print (Tmp);
  }
};

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

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

A100 , 2017.12.19 23:04

Çalışma hatası

 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()
}

Her iki durumda da anlaşılabilir bir neden var gibi görünüyor - alan ve yöntem aynı ada sahip, bu nedenle alana ve yönteme erişim tamamen aynı. Buna göre, derleyici yöntemi değil alanı çağırır. İlk durumda, alan ayarlanmadı, bu yüzden bir serseri. İkincisinde tüm normlar - alan neden olur.

Bu nedenle, base'de bir yöntem bildirilirse ve çocuğa aynı ada sahip bir alan bildirilirse, farklı bir sırayla işlenir.

Derleyici bunu vermeliydi

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

Buna göre, derleyici yöntemi değil alanı çağırır.

Bir alan neden bir yöntemden daha iyidir? Örneğin, C++ bir alanı değil, bir yöntemi çağırır - bu mantıklıdır - çünkü yöntem türetilmiş bir sınıftadır , yani daha yakındır. Başka bir deyişle - imza türetilmiş sınıfa tamamen uygunsa - neden temel olana geçelim?

 
A100 :

Bir alan neden bir yöntemden daha iyidir? Örneğin, C++ bir alanı değil, bir yöntemi çağırır - bu mantıklıdır - çünkü yöntem türetilmiş bir sınıftadır , yani daha yakındır. Başka bir deyişle - imza türetilmiş sınıfa tamamen uygunsa - neden temel olana geçelim?

Derleyiciden her zaman bir uyarının eşlik etmesi gereken yapay bir durum yarattığınızı anlıyorsunuz.

Konuya "yakın" yazdı

fxsaber :

tabanda bir yöntem ve alt öğeye aynı ada sahip bir alan bildirirseniz, farklı bir sırayla işlenir.

 
fxsaber :
Statik değişkenlerle olan nüansı hatırlayamıyorum. Lütfen bana bu piç kurusunun neden böyle bir şey verdiğini hatırlat.

Bütün sorun, değişkenlerin başlatılma sırası ve kod yürütme sırasıdır.

Bunu adım adım hata ayıklama modunda anlamak, kelimelerle açıklamaktan daha kolaydır.

 

Serbest mesleklerle ilgili garip böcek.

Devam eden 4 iş vardı. aldım 1 oldum 5 geçtim bir sol 5

aslında 4 eser 5 yazar. başka bir yazı aldı 6 . bir aslında 4 eser teslim etti ama süreç içinde 6

bir tane daha aldı aslında 5 iş ama "devam ediyor" 7

şimdi sadece 5 tanesine sahip olmama rağmen iş alamıyorum

Talep Numarası

1913868  

 
Aleksei Beliakov :

Serbest mesleklerle ilgili garip böcek.

Devam eden 4 iş vardı. aldım 1 oldu 5 geçti bir sol 5

aslında 4 eser 5 yazar. başka bir yazar 6 aldı. bir aslında 4 eser teslim etti ama süreç içinde 6

bir tane daha aldı aslında 5 iş ama "devam ediyor" 7

şimdi sadece 5 işim olmasına rağmen iş alamıyorum

Talep Numarası

1913868  

Bildirdiğiniz için teşekkürler, bir düzeltme üzerinde çalışıyoruz.