![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Es hat sich eine Frage ergeben:
Es gibt eine Klasse "Programm", die die Klassen"Neuer Balken" und "Datenmanager" verwendet. Die Klasse "Neuer Balken" verwendet ihrerseits ebenfalls die Klasse "Datenmanager". Öffentliche Getter und Setter sind in der Klasse "Data Manager" implementiert.
Frage: Welche Möglichkeiten gibt es bei der Initialisierung des Programms für die Klasse "Neuer Balken", um die Eigenschaften "Symbol" und "Zeitrahmen" der Klasse "Datenmanager" festzulegen? Ich möchte keine öffentlichen Getter und Setter in der Klasse New Bar haben, um auf die Datenmanagerfelder zuzugreifen. Und wir möchten, dass der Datenmanager privat bleibt.
Mit anderen Worten: Die Anwendung kann mehrere Klassen verwenden, die den Datenmanager nutzen. Während der Initialisierung des Programms müssen alle Managerfelder aller Klassen mit den erforderlichen Werten initialisiert werden. Ich möchte aber nicht in allen Klassen Getter erstellen, um auf die Felder des Datenmanagers zuzugreifen. Also...
Nach Ihrer Beschreibung ist es sinnvoll, diese Einstellungen in einer separaten Einheit vorzunehmen, die für alle Manager gleich ist und nicht nur für
Ja, es sieht so aus, dass Sie Klassen, die einen Manager benötigen, von einer Basisklasse erben müssen, die Getter für die Managerfelder hat. Ich danke Ihnen.
Es hat sich eine Frage ergeben:
Es gibt eine Klasse "Programm", die die Klassen"Neuer Balken" und "Datenmanager" verwendet. Die Klasse "Neuer Balken" verwendet ihrerseits die Klasse "Datenmanager". Öffentliche Getter und Setter sind in der Klasse "Data Manager" implementiert.
Frage: Welche Möglichkeiten gibt es bei der Initialisierung des Programms für die Klasse "Neuer Balken", um die Eigenschaften "Symbol" und "Zeitrahmen" der Klasse "Datenmanager" festzulegen? Ich möchte keine öffentlichen Getter und Setter in der Klasse New Bar haben, um auf die Datenmanagerfelder zuzugreifen. Und wir möchten, dass der Datenmanager privat bleibt.
Mit anderen Worten: Die Anwendung kann mehrere Klassen verwenden, die den Datenmanager nutzen. Während der Initialisierung des Programms müssen alle Managerfelder aller Klassen mit den erforderlichen Werten initialisiert werden. Ich möchte aber nicht in allen Klassen Getter erstellen, um auf die Felder des Datenmanagers zuzugreifen. Also...
So mache ich das auch.
So mache ich es ungefähr.
Danke für das Beispiel, es ist ein bisschen kompliziert, aber im Großen und Ganzen ist die Idee klar. Sofort stellt sich die Frage: Ok, wenn "eine Verschachtelungsebene" - hier ist es klar, aber wenn es mehrere Verschachtelungsebenen geben wird?
Hinzugefügt:
Es ist auch nicht klar, warum das Feld cIsDelData? Schließlich können Sie m_data im Destruktor einfach gegen POINTER_DINAMIC prüfen. Oder liege ich da falsch?
Wenn Sie Vererbung betreiben, erhalten Sie eine Menge unnötiger Methoden. Und das Objekt muss privat sein. Also, Sie werden es nicht glauben, aber der einfachste Weg ist, Setter für alle Klassen, die Datenmanager verwenden.
Wenn alle Datenmanager mit den gleichen Parametern arbeiten, ist es besser, keine Objekte zu erstellen, sondern einen Zeiger auf einen Datenmanager zu übergeben. In diesem Fall ist nur ein Setter erforderlich, um den Zeiger zu übergeben.
Danke für das Beispiel, es ist ein bisschen kompliziert, aber im Großen und Ganzen ist die Idee klar. Sofort stellt sich die Frage: Ok, wenn "eine Verschachtelungsebene" - hier ist es klar, aber wenn es mehrere Verschachtelungsebenen geben wird?
Hinzugefügt:
Es ist auch nicht klar, warum das Feld cIsDelData? Schließlich können Sie m_data im Destruktor einfach gegen POINTER_DINAMIC prüfen. Oder liege ich da falsch?
Danke, ich werde darüber nachdenken.
Ich mache es ungefähr so.
was diese ZeileCDataManager* m_data bedeutet;
Leute, ich möchte so etwas machen. Ich habe ein Makro.
Infolgedessen werde ich 2 Makrosfoor undfoor1 haben.
was diese ZeileCDataManager* m_data bedeutet;
Leute, ich möchte so etwas machen. Ich habe ein Makro.
Infolgedessen werde ich 2 Makrosfoor undfoor1 haben.
Ein Zeiger auf ein Objekt.
Nichts für ungut, aber es ist noch zu früh für Sie, sich mit solchen Makros zu befassen. Zunächst einmal sollten Sie verstehen, warum ich das getan habe: