struct A
{
private :
int i;
};
struct B : public A
{
int i; // A::i в private, поэтому никакого пересечения по именам
};
voidOnStart ()
{
A a;
B b;
Print ( sizeof (a)); // 4Print ( sizeof (b)); // 8 - при любом наследовании размер только увеличивается// Кастинг в обе стороны без union
a = b;
b = a;
}
Bazı genel yöntemlerin parlamasını istemediğimde (örneğin bir nesnenin adından sonra bir nokta yazarken), bu yöntemi genel operatör olarak yapıyorum. Doğru, böyle bir koltuk değneği kullanmak her zaman mümkün değildir.
Bazı genel yöntemlerin parlamasını istemediğimde (örneğin bir nesnenin adından sonra bir nokta yazarken), bu yöntemi genel operatör olarak yapıyorum. Doğru, böyle bir koltuk değneği kullanmak her zaman mümkün değildir.
struct A
{
private :
int Value;
public :
int GetValue( void ) const
{
return ( this .Value);
}
};
struct B : public A
{
private :
// Делает доп. расчетыvoid AddCalculate( void )
{
Print ( __FUNCSIG__ );
}
public :
// Так "спрятали" метод доп. расчетовvoidoperator ~( void )
{
this .AddCalculate();
}
};
voidOnStart ()
{
A a;
B b;
b = a; // После присвоения требуется вызвать доп. расчеты.
~b; // Провели доп. расчеты
b.GetValue(); // После точки попрежнему виден только GetValue()
}
struct A
{
private :
int Value;
public :
int GetValue( void ) const
{
return ( this .Value);
}
};
struct B : public A
{
private :
// Делает доп. расчетыvoid AddCalculate( void )
{
Print ( __FUNCSIG__ );
}
public :
// Так "спрятали" метод доп. расчетовvoidoperator ~( void )
{
this .AddCalculate();
}
};
voidOnStart ()
{
A a;
B b;
b = a; // После присвоения требуется вызвать доп. расчеты.
~b; // Провели доп. расчеты
b.GetValue(); // После точки попрежнему виден только GetValue()
}
Ve bu
class A
{
private :
void AddCalculate( void ) const
{
Print ( __FUNCSIG__ );
}
public :
int GetValue( void ) const
{
this .AddCalculate();
return ( 0 );
}
};
Tabii ki değil. Değer1, Değer2, ..., GetValue1(), GetValue2() - benzer şekilde birçok alan vardır. Her GetValue'da ek yapın. hesaplamalar mantıksız. Birden fazla kez çağrılan bir GetValue'da bile hesaplamalar işe yaramaz.
MQL5'te Neden işaretleri görünmeden önce bile, SL/TP tetikleyicisi forumda yayınlandı . Mantığı, bir açık pozisyonun SL/TP/SO seviyeleri alım satım sunucusu tarafından kabul edildiğinde, yürütülene kadar MT5 açık emir tablosunda bulunan ilgili piyasa emrinin üretildiğini açıkça gösterdi.
Bu nedenle, MT5'te, saf MQL5'te bile, bu tür emirlerin değiştirilmesi/silinmesi imkansızdır ve MT5'teki işlem mantığı, açık bir emrin gerçekten donmuş olup olmadığını kontrol etmeyi gerektirir.
Bazı genel yöntemlerin parlamasını istemediğimde (örneğin bir nesnenin adından sonra bir nokta yazarken), bu yöntemi genel operatör olarak yapıyorum. Doğru, böyle bir koltuk değneği kullanmak her zaman mümkün değildir.
Evet, bu genellikle bir tür mega koltuk değneğidir. O zaman bu tür bilgi vermeyen operatörlerin dürtüldüğü kodunuzu nasıl ayrıştıracaksınız, ne yaptıkları belli değil.
Bu bir tasarım hatası gibi görünüyor. Sınıf başlangıçta dışarıdan değiştirilmek üzere tasarlanmadıysa, ancak yalnızca Get yöntemlerini içeriyorsa, öyle olmalıdır. Ve tüm değişiklikler ondan miras alınan sınıflar aracılığıyla gerçekleştirilir.
Ayrıca, tüm yöntemler temel sınıfta yazıldığında ve yalnızca devralınan sınıfta Get'i gösterdiğinizde, korumalı kalıtımın olması daha uygun olacaktır. Ve gerektiğinde üsse getirirsiniz. Ancak Metaeditor, mevcut olmasa bile tüm bu yöntemlerin listede yer alması hatasını henüz düzeltmedi.
Her GetValue'da ek yapın. hesaplamalar mantıksız. Birden fazla kez çağrılan bir GetValue'da bile hesaplamalar işe yaramaz
Peki Recalculate() yönteminin yapılmasını gerçekten engelleyen nedir? İşin mantığı bunun üzerine kuruluysa, çünkü sınıfın kendisi ne zaman yeniden hesaplanacağını belirleyemez, bu da kullanıcının sınıfın çalışmasını kontrol ettiği anlamına gelir.
Kalıtsal yapıların özellikleri
Pencerede Ayarlar --> Grafikler --> Maksimum çubuklar'da "Sınırsız" bayrağının etkinleştirilip etkinleştirilmediğini öğrenmeniz gerekirse, aşağıdaki yapıyı kullanıyorum :
Bazı genel yöntemlerin parlamasını istemediğimde (örneğin bir nesnenin adından sonra bir nokta yazarken), bu yöntemi genel operatör olarak yapıyorum. Doğru, böyle bir koltuk değneği kullanmak her zaman mümkün değildir.
Bazı genel yöntemlerin parlamasını istemediğimde (örneğin bir nesnenin adından sonra bir nokta yazarken), bu yöntemi genel operatör olarak yapıyorum. Doğru, böyle bir koltuk değneği kullanmak her zaman mümkün değildir.
Koddaki bir örneğe ne dersiniz? Rica ederim.
Koddaki bir örneğe ne dersiniz? Rica ederim.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri
fxsaber , 2017.09.08 13:20
Ve bu
aynı şey değil miVe bu
aynı şey değil miTabii ki değil. Değer1, Değer2, ..., GetValue1(), GetValue2() - benzer şekilde birçok alan vardır. Her GetValue'da ek yapın. hesaplamalar mantıksız. Birden fazla kez çağrılan bir GetValue'da bile hesaplamalar işe yaramaz.
Basit bir yapının dizi alanının boyutunu nasıl ayarlayacağımı çözemedim. Bu nedenle, şişirilmiş böyle bir koltuk değneği
Kısacası makrolar aracılığıyla. MQL5'te muhtemelen başka bir şey yok. C++'da bu doğru mu? Şablon türü şablonu <typesize S>.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Kitaplıklar: MT4Orders
fxsaber , 2017.09.14 08:52
MQL5'te Neden işaretleri görünmeden önce bile, SL/TP tetikleyicisi forumda yayınlandı . Mantığı, bir açık pozisyonun SL/TP/SO seviyeleri alım satım sunucusu tarafından kabul edildiğinde, yürütülene kadar MT5 açık emir tablosunda bulunan ilgili piyasa emrinin üretildiğini açıkça gösterdi.
Bu nedenle, MT5'te, saf MQL5'te bile, bu tür emirlerin değiştirilmesi/silinmesi imkansızdır ve MT5'teki işlem mantığı, açık bir emrin gerçekten donmuş olup olmadığını kontrol etmeyi gerektirir.
...TP emrinin çeyrek saniyeden fazla açık emirler arasında asılı kaldığı görülüyor. Herhangi bir değiştirme/kaldırma girişimi hatalara neden olur.
MT5'in bu özelliğini düşünün.
Bazı genel yöntemlerin parlamasını istemediğimde (örneğin bir nesnenin adından sonra bir nokta yazarken), bu yöntemi genel operatör olarak yapıyorum. Doğru, böyle bir koltuk değneği kullanmak her zaman mümkün değildir.
Evet, bu genellikle bir tür mega koltuk değneğidir. O zaman bu tür bilgi vermeyen operatörlerin dürtüldüğü kodunuzu nasıl ayrıştıracaksınız, ne yaptıkları belli değil.
Bu bir tasarım hatası gibi görünüyor. Sınıf başlangıçta dışarıdan değiştirilmek üzere tasarlanmadıysa, ancak yalnızca Get yöntemlerini içeriyorsa, öyle olmalıdır. Ve tüm değişiklikler ondan miras alınan sınıflar aracılığıyla gerçekleştirilir.
Ayrıca, tüm yöntemler temel sınıfta yazıldığında ve yalnızca devralınan sınıfta Get'i gösterdiğinizde, korumalı kalıtımın olması daha uygun olacaktır. Ve gerektiğinde üsse getirirsiniz. Ancak Metaeditor, mevcut olmasa bile tüm bu yöntemlerin listede yer alması hatasını henüz düzeltmedi.
Her GetValue'da ek yapın. hesaplamalar mantıksız. Birden fazla kez çağrılan bir GetValue'da bile hesaplamalar işe yaramaz
Peki Recalculate() yönteminin yapılmasını gerçekten engelleyen nedir? İşin mantığı bunun üzerine kuruluysa, çünkü sınıfın kendisi ne zaman yeniden hesaplanacağını belirleyemez, bu da kullanıcının sınıfın çalışmasını kontrol ettiği anlamına gelir.