![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
Hallo MQL-Kollegen,
ich habe Probleme bei der Verwendung von Interfaces in MQL5 im Zusammenhang mit der Methodik CArrayObject.add() wie folgt:
CArrayObj _messages;
bool CLogger::addMessage(IMessage* msg){
... //
return messages.Add(msg);
}
Fehlermeldung: 'msg' parameter conversion not allowed
Ursache: Die Methode Add((CObject* element) erwartet ein CObject Element. Das Interface IMessage ist jedoch nicht von CObject abgeleitet (Interfaces können nur von anderen Interfaces abgeleitet werden).
Hintergrund: Ich möchte verschiedene Arten von 'Messages' dem ArrayObjekt hinzufügen. Um dies zu realisieren wollte ich in der dargestellten Code-Stelle das Interface verwenden, da an dieser Stelle die verschiedenen Typen von Messages verwendet werden sollen.
Ein weiterer Versuch war eine Implementierung einer AbstractMessage-Klasse zu implementieren welche dann die "Schnittstelle" zwischen Implementierten Message-Klassen und dem Interface fungiert. Leider besteht dann das Problem, dass in MQL5 kein multiples Ableiten möglich ist, denn dann müsste es im Klassenkopf heißen:
class AbstractMessage : public IMessage, CArrayObj
Vielleicht hatte jemand bereits ein ähnliches Problem und kann mir hierbei helfen. Ich sehe nämlich derzeit nur die Lösung das Interface zu löschen und die Abstrakte Klasse von CObject abzuleiten - ich würde aber eine Lösung mit Verwendung des Interfaces bevorzugen.
Ich hoffe ich konnte das Grundproblem ausreichend gut erläutern - falls weitere Informationen notwendig sind bitte ich um kurze Rückmeldung.
Besten Dank schon einmal an Alle!