Hatalar, hatalar, sorular - sayfa 1615

 
Herkese merhaba. MT5'teki sunucuyla bağlantı koptuğunda bir hesaba programlı olarak yeniden giriş yapmak mümkün müdür?
 

Derleme Hatası:

 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
  }
 

İşte birkaç hata daha:

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

Ayrıca işaretçi dökümünde çok akıllıca bir şey vardı.

Aşağıdaki kod derlenmiyor:

 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
  }

oyuncu kadrosu açık olmasına rağmen. Her şey C++'da çalışır.

 
Alexey Navoykov :

Ayrıca işaretçi dökümünde çok akıllıca bir şey vardı.

Bu doğru, derleyici yemin ediyor
 
Комбинатор :
Bu doğru, derleyici yemin ediyor
O zaman doğru nedir? C++'ı açın ve nasıl olması gerektiğini kontrol edin.
 
Alexey Navoykov :
dynamic_cast, static_cast ve reinterpret_cast hakkında ve bunların ne zaman doğru ve ne zaman kullanılmayacağını okuyun.
 
Комбинатор :
dynamic_cast, static_cast ve reinterpret_cast hakkında ve bunların ne zaman doğru ve ne zaman kullanılmayacağını okuyun.
Gereksiz sel ve felsefe olmadan yapalım, tamam mı? Derlenmesi gereken belirli bir yapıdan bahsediyoruz.
 
Alexey Navoykov :

C++ bu kodu reinterpret_cast'e ve MQL'yi dynamic_cast'e dönüştürür. Ve anladığım kadarıyla, bu tam olarak derleyicinin derleme sırasında bir hoparlör hatası bulabildiği durumdur.

reinterpret_cast bu durumda gayri meşrudur, bu nedenle bu kodun C++ ile derlenmesi bir argüman değildir.

 
Комбинатор :

C++ bu kodu reinterpret_cast'e ve MQL'yi dynamic_cast'e dönüştürür. Ve anladığım kadarıyla, bu tam olarak derleyicinin derleme sırasında bir hoparlör hatası bulabildiği durumdur.

reinterpret_cast bu durumda gayri meşrudur, bu nedenle bu kodun C++ ile derlenmesi bir argüman değildir.

Bekle, neden her şeyi birbirine karıştırıyorsun? Ve konuşmacı kadrosu burada mı? Derleyicinin görevleri arasında Sherlock Holmes oynamak ve program mantığında bir şeyler aramak yer almaz. Dil standardına uygunluğun yalnızca resmi bir kontrolünü gerçekleştirir, başka bir şey değil. Ve standart açısından, benim için her şey doğru.

Üstelik buradaki nokta hiç de kadroda değil. Örneğime dikkatlice bakarsanız, oradaki sorunun korumalı ile ilgili olduğunu görürsünüz. Bunu public ile değiştirirseniz, her şey yolunda demektir. Nesnenin kendisi değişmez. Onlar. MQL derleyicisinde bu sadece gereksiz bir sınırlamadır, hepsi bu.

Öyleyse spekülasyon yapmayın ve açıkça var olmadığı yerde gizli bir anlam aramayın. Ve sadece banal derleyici hatası var.