Hatalar, hatalar, sorular - sayfa 1736

 
coderex :

belki biri ilgilenir, cevap servis masası:

На данный момент оператор *(dereference/indirection) можно использовать только для указателей на объекты классов и это rvalue

Benim için çok ilginç! Lütfen Service Desk'in cevabını bir örnekle açıklayınız.

& == GetPointer(). * - hiçbirşey değişmedi.

 
fxsaber :

Benim için çok ilginç! Lütfen Service Desk'in cevabını bir örnekle açıklayınız.

& == GetPointer(). * - hiçbirşey değişmedi.

hangi örneğe ihtiyacın var?
 
coderex :

belki biri ilgilenir, cevap servis masası:

На данный момент оператор *(dereference/indirection) можно использовать только для указателей на объекты классов и это rvalue
Bu arada, geçen gün onlara herhangi bir veri türüne işaretçilerin tanıtılması hakkında bir teklif gönderdim. Ve bu saçma kısıtlama zaten yeterli.
 
Alexey Navoykov :
Bu arada, geçen gün onlara herhangi bir veri türüne işaretçilerin tanıtılması hakkında bir teklif gönderdim. Ve bu saçma kısıtlama zaten yeterli.
* operatörünün aşırı yüklenmesini sağlamak güzel olurdu, aksi takdirde STL ile kimliği onsuz uygulamak imkansızdır, ayrıca bir typedef'i sadece geri çağırmalarda değil, tam olarak tanıtmak da güzel olurdu
 
coderex :
* operatörünün aşırı yüklenmesini sağlamak güzel olurdu, aksi takdirde STL ile kimliği onsuz uygulamak imkansızdır, ayrıca bir typedef'i sadece geri çağırmalarda değil, tam olarak tanıtmak da güzel olurdu
Evet katılıyorum. Her şey bitmemiş bir durumda. Ve aşırı yüklemeler açısından, ben daha çok cast operatörüyle ilgileniyorum, onsuz genellikle zor.
 
coderex :
hangi örneğe ihtiyacın var?
* ve &'dan ne istediğinizi. Basit ama görsel bir şey. Kolaylık görmek için.
 
fxsaber :
* ve &'dan ne istediğinizi. Basit ama görsel bir şey. Kolaylık görmek için.

İstediğimi yukarıda yazdım zaten.

GetPointer'ı (...) kullandığınız '&' operatörü ile kendiniz bir örnek düşünebilirsiniz, bu aslında kısa bir formdur.

'*' operatörlü bir örnek - anlamanıza yardımcı olup olmayacağını bilmiyorum:

class Iterator
  {
   int m_value;
public :
   Iterator( const int val) : m_value(val) { }
   int operator *() { return m_value; }
  };

int main( int argc, char **argv) {
   Iterator *_it = new Iterator( 5 );
  
   int _val = **_it;
//---
   return 0 ;
}


bu C++'da çalışır, ancak MQL'de m_value almak için bir alıcı yapmanız gerekir.

 

OBJ_CHART ChartRedraw(MainChartID)'nin yeniden çizim için uygun olmadığını Yardım'a ekleyin. ChartRedraw(ObjChartID) gerekiyor.

Bu nedenle, Yardım'daki örnek yanlıştır.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_CHART
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_CHART
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_CHART - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Lütfen ölçeği N <= 5 (çubuğun altındaki alanın boyutu = 2^N) ile sınırlamayın.

Kene geçmişine daha detaylı bakabilmek için bu gereklidir (ve amaca uygun hale gelmiştir).

 
Lütfen açıkla. Senaryo
class A
{
public :
   const int a;
  
  A( int c = 0 ) : a(c) {}
  
   virtual int f()
  {
     Print ( __FUNCTION__ );
    
     return ( this .a);
  }
};

class B : public A
{
public :
   const int b;
  
  B( int c = 0 ) : A(c), b( this .f()){}

   virtual int f()
  {
     Print ( __FUNCTION__ );
    
     return ( this .a);
  }
};


void OnStart ()
{
  B b;  
  A* a = new B;
  
   delete a;
}

Sonuç

2016.10 . 18 09 : 35 : 01.981 Test14 (GBPUSD,M1)      B::f
2016.10 . 18 09 : 35 : 01.981 Test14 (GBPUSD,M1)      B::f

Neden A::f değil de B::F döndürüyor? Komut dosyası, f çağrısı yapıcının gövdesinin yürütülmesinden ÖNCE gerçekleşecek şekilde yazılmıştır (kalın harflerle vurgulanmıştır). Ama bu noktada, A temel sınıfının yapıcısı zaten çağrıldı.Bu nedenle, this.f(), öyle görünüyor ki, özellikle temel sınıfa atıfta bulunmalıdır, B yapıcısı henüz yürütülmedi. Akıl yürütme/durmalardaki hatanın ne olduğunu açıklamanızı rica ediyorum.