Hallo! Lese mich gerade in C++/CLI ein und habe mal eine Frage zu den Schnittstellen. In ANSI C++ gibt es ja die Mehrfachvererbung mit der ich die Methoden von Klasse A und B an eine Klasse C vererben kann und mir so das schreiben von vorhanden Methoden sparen kann. In C++/CLI gibt es diese Mehrfachvererbung nicht mehr. Als Ersatz sollen die Schnittstellen(Schlüsselwort"interface") dienen. Da diese aber nur die Deklarationen enthalten muss ich die Methoden ja doch selber schreiben. Mir ist jetzt nicht klar in wie fern das die Mehrfachvererbung von ANSI C++ ersetzen soll. Ich erkenne nur den Sinn der Schnittstellen um eine Klasse Polymorph zu machen. Kann mich da jemand aufklären? Viele Grüße Deepdiver99
Deepdiver99 schrieb: > Kann mich da jemand aufklären? Das hat keinen Sinn für dich, sondern nur den, daß es einfacher ist einen Compiler bzw. ein Laufzeitsystem zu bauen, wenn man keine Mehrfachvererbung unterstützen muss. Java- und .Net-Apostel können gelegentlich sehr eloquent viele Vorteile davon aufzählen, aber letztlich es einfach Unvermögen. Interfaces sind ein müder Abklatsch von Mehrfachvererbung.
Nicht gerade die klärende Antwort die ich erwartet hatte ;-). Aber das mache Neuerungen nicht immer besser sind kommt doch recht häufig vor.
Deepdiver99 schrieb: > Nicht gerade die klärende Antwort die ich erwartet hatte ;-). Aber das > mache Neuerungen nicht immer besser sind kommt doch recht häufig vor. Einfachvererbung ist uralt (auch in C++ (wer sich noch erinnern kann, Embedded C++, Cfront 1.0)). Oder um im Stil von "Interfaces sind ein müder Abklatsch von Mehrfachvererbung" zu bleiben: C++ (auch C++/CLI) ist alles mögliche nur nicht gut objektorientiert (wie Mehrfachvererbung richtig gemacht wird, kann man z.B. an Eiffel nachvollziehen). Zum eigentlichen Problem http://stackoverflow.com/questions/2515886/design-pattern-to-use-instead-of-multiple-inheritance bzw. wie Eiffel Mehrfachvererbung mit der CLR umsetzt http://www.drdobbs.com/article/print?articleId=184414864&dept_url=/
Klaus Wachtler schrieb: > Interfaces sind ein müder Abklatsch von Mehrfachvererbung. Vor Allem sind sie viel einfacher zu handeln und reichen in 99% der Faelle aus. Und fuer das letzte 1% gibt es auch gute Loesungen.
Man kann in C++/CLI zwar Informationen darüber, welche Methoden definiert werden sollen aus diversen Oberinterfaces erben, selbige aber nicht durch Erben implementieren, was allerdings z.B. bei der Implementierung von Protokollen sehr nützlich wäre. In C++/CLI gibt's offenbar einen Weg dies über Templates zu umgehen - ist aber alles andere als eine gute Lösung. Da aber Interfaces in C++ genauso möglich sind, frage ich mich schon auch, wieso dieses Konzept nicht beibehalten wurde.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.