Fehler, Irrtümer, Fragen - Seite 1729

 
fxsaber:

Ich erstelle OBJ_CHART und ziehe es mit der Maus um die obere linke Ecke des Diagramms. Beim Ziehen wird ObjectDelete mit erfolgreichem Ergebnis aufgerufen. MT5.

Auch. Wenn ich OBJ_CHART ziehe und seine CHART-Eigenschaften ändere (z.B. ChartNavigate), dann gibt es keine entsprechende Visualisierung.
 
Kommentare, die für dieses Thema nicht relevant sind, wurden in den Abschnitt "Wie kann man bestimmen, zu welchem Indikator jedes Unterfenster gehört" verschoben.
 
A100:

Kompilierungsfehler:

Erscheint in Build 1447
Danke für den Beitrag, die Kontrolle der übergebenen Parameterkonstanz wurde korrigiert.

In beiden Fällen kommt es nun zu einem Kompilierungsfehler. Der Code sollte geändert werden, um den Fehler zu vermeiden:
template<typename T>
void f1( const T* const & a[] ) {}    << добавлена константность ссылки
class A {};
void f2( const A* const & a[] ) {}    << добавлена константность ссылки
class B {
        void g1() const { f1( a ); } //error: 'f1' - cannot to apply function template
        void g2() const { f2( a ); } //нормально
        A *a[];
};
 
константность ссылки

Ich habe das nirgendwo gesehen. Ist das der Standard?

 
Ilyas:
In beiden Fällen kommt es zu einem Kompilierungsfehler. Um diesen Fehler zu vermeiden, sollte der Code geändert werden:

Bitte prüfen Sie auch diesen Widerspruch (hier nebenstehend - Fehler am Ende)

template<typename T>
void f1( const T& a[] ) {}
class A {};
void f2( const A& a[] ) {}
class B {
        void g1() const { f1( a ); } //нормально
        void g2() const { f2( a ); } //error: 'a' - parameter conversion not allowed
        A *a[];
};
 

Wie arbeitet MQL5 mit dem Speicher?

Zum Beispiel gibt es den folgenden Code:

class Alfa {}
class Beta
  {
private:
   Alfa  *ptr_a;
   Alfa   obj_a;
public:
   Beta(void) { ptr_a = new Alfa(); }
  ~Beta(void) { delete ptr_a; }
   Metod(void) {...}
  }
//---

int OnInit(void) {
   Beta *ptr_obj = new Beta();
   Beta obj;
//---
   return INIT_SUCCEEDED;
}
void OnDeinit(const int reason) {
   delete ptr_obj;
}

wonach für das Objekt ptr_obj Speicher im "heap" und für das Objekt obj automatisch Speicher zugewiesen wird. Wenn der Betrieb des MQL5 Speichermanagers für diese Objekte klar ist:

1. dem Objektptr_a des Objektsptr_obj wird Speicher im "Heap" zugewiesen.

2. Speicher für Objektobj_a von Objektobj wird automatisch zugewiesen

Wie der MQL5-Speichermanager in diesen Fällen organisiert ist:

3. in welchem Speicherbereich wird sich das Objekt obj_a des Objekts ptr_obj befinden

4. in welchem Bereich des Speichers wird sich das Objekt ptr_a des Objekts obj befinden

 
A100:

Bitte prüfen Sie auch diesen Widerspruch (hier in umgekehrter Reihenfolge)

Das ist richtig, hier mit Tippen, T = A *
 
void f( const A* &Array[] );

Mit dieser Übertragung ist es möglich, die Elemente im Array (und die Größe) zu vertauschen, nicht aber die Elemente selbst. Oder?

void f( const A* const &Array[] );

Und auch hier können die Elemente (und die Größe) nicht vertauscht werden. Ist das richtig?

 
fxsaber:

Ich habe das nirgendwo gesehen. Ist das der Standard?

Geschrieben, um nicht zu schreiben: es sollte ein Verweis auf eine konstante Reihe von Zeigern auf konstante Objekte sein
 
fxsaber:

Mit dieser Übertragung ist es möglich, die Elemente im Array (und die Größe) zu vertauschen, nicht aber die Elemente selbst. Oder?

Und auch hier können die Elemente (und die Größe) nicht vertauscht werden. Ist das richtig?

Ja, das ist richtig.