Der Code zeigt eine BAG, in der eine Bedingung nicht eingegeben werden kann, löst aber dennoch einen Haltepunkt an einer völlig anderen Stelle im Code aus. Noch Fragen?
Der Code-Optimierer hat alles weggeworfen, und die Funktion ist nun leer.
Der Haltepunkt bewegte sich bis zum Ende der Funktion und löste aus.
Es war der Code-Optimierer, der alles verworfen und die Funktion leer gelassen hat. Der Haltepunkt wurde an das gleiche Ende der Funktion verschoben und funktionierte.
Ich habe mich beim ersten Beispiel ein wenig aufgeregt, da stimme ich zu. Aber was ist mit dem zweiten? Nun, der Haltepunkt bleibt innerhalb der Bedingung und bewegt sich nicht. Das Auslösen eines Haltepunkts verleitet den Benutzer zu der Annahme, dass die Eingabebedingung erfüllt ist, obwohl dies in Wirklichkeit gar nicht der Fall ist:
class A{
public:
bool m_flag;
A* m_next;
A(bool flag) : m_flag(flag){}
void test(){
if(m_flag){
printf("1");
m_next = m_next; // Вручную установленная точка останова срабатывает как для false так и true условий//m_next = &this; // Ok
}
}
};
voidOnStart(){
{A a(false); a.test();} // Result: breakpoint Expected result:
{A a(true); a.test();} // Result: printf + breakpoint Expected result: printf + breakpoint
}
MT5 (Build 2460) ist bei der Verwendung der Vererbung von Vorlagenklassen etwas kaputt gegangen, in früheren Versionen einschließlich Build 2450 hat alles funktioniert.
namespace NameSpace{
struct A{};
template<typename T>
struct B : public A{}; // 'A' - declaration without type
};
struct D : public NameSpace::B<int>{
int data;
};
voidOnStart(){
D d;
}
Warum können wir inOBJ_TRENDBYANGLE den Winkel nicht programmatisch ermitteln?
Wir können die Zeit und die Preise der beiden Punkte programmatisch festlegen, aber der Winkel gibt 0 zurück.
Wenn wir OBJ_TRENDBYANGLE manuell verschieben, gibt es den normalen Winkelwert zurück.
Ich möchte einfach Text auf der Trendlinie in demselben Winkel wie die Trendlinie selbst platzieren.
Aber die Trendlinie gibt den Winkel nicht zurück, während OBJ_TRENDBYANGLE eine feste zweite Koordinate hat, und wenn sich die Skala des Diagramms infolge eines Anstiegs oder Rückgangs des Preises ändert, erhalten wir falsche Informationen...
Структура является набором элементов произвольного типа (кроме типа void). Таким образом, структура объединяет логически связанные данные разных типов. Объявление структуры Имя структуры нельзя использовать в качестве идентификатора (имени переменной или функции). Следует иметь ввиду, что в MQL5 элементы структуры следуют непосредственно друг...
Der Code zeigt eine BAG, in der eine Bedingung nicht eingegeben werden kann, löst aber dennoch einen Haltepunkt an einer völlig anderen Stelle im Code aus.
Noch Fragen?
Der Code-Optimierer hat alles weggeworfen, und die Funktion ist nun leer.
Der Haltepunkt bewegte sich bis zum Ende der Funktion und löste aus.
Es war der Code-Optimierer, der alles verworfen und die Funktion leer gelassen hat.
Der Haltepunkt wurde an das gleiche Ende der Funktion verschoben und funktionierte.
Ich habe mich beim ersten Beispiel ein wenig aufgeregt, da stimme ich zu.
Aber was ist mit dem zweiten? Nun, der Haltepunkt bleibt innerhalb der Bedingung und bewegt sich nicht.
Das Auslösen eines Haltepunkts verleitet den Benutzer zu der Annahme, dass die Eingabebedingung erfüllt ist, obwohl dies in Wirklichkeit gar nicht der Fall ist:
Der Haltepunkt wurde an das gleiche Ende der Funktion verschoben und funktionierte.
Glauben Sie, dass es sich nicht um einen Fehler handelt?
C++ online:https://onlinegdb.com/S1E503pj8
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
OOP-Fragen in MQL5
fxsaber, 2020.05.30 10:04
Ich habe ein unerwartetes Ergebnis erhalten.Warum können wir inOBJ_TRENDBYANGLE den Winkel nicht programmatisch ermitteln?
Wir können die Zeit und die Preise der beiden Punkte programmatisch festlegen, aber der Winkel gibt 0 zurück.
Wenn wir OBJ_TRENDBYANGLE manuell verschieben, gibt es den normalen Winkelwert zurück.
Ich möchte einfach Text auf der Trendlinie in demselben Winkel wie die Trendlinie selbst platzieren.
Aber die Trendlinie gibt den Winkel nicht zurück, während OBJ_TRENDBYANGLE eine feste zweite Koordinate hat, und wenn sich die Skala des Diagramms infolge eines Anstiegs oder Rückgangs des Preises ändert, erhalten wir falsche Informationen...
Warum gibt der Compiler eine Warnung aus?
UPD: nein
int ArrayInitialize( uchar array[], uchar value );
ist es nicht angebracht, zu schreiben
401Code - was ist der Fehler?
Was ist los?
401
Es ist nicht möglich, von dieser Klasse zu erben, da sie mit dem Spezifizierer final deklariert ist
Warum gibt der Compiler eine Warnung aus?
UPD: nein
int ArrayInitialize( uchar array[], uchar value );
ist nicht bequem zu schreiben
0xFF wird wahrscheinlich vom Compiler in 4 Bytes umgewandelt.
401Code ,kann mir jemand sagen, was dieser Fehler ist?
gefunden
401
Eine Vererbung von dieser Klasse ist nicht möglich, da sie mit dem Spezifizierer final deklariert ist
Wie lautet die Frage - es gibt keinen abschließenden Modifikator, aber es liegt ein Fehler vor, oder was?