Forum: PC-Programmierung C++/CLI Schnittstellen


von Deepdiver99 (Gast)


Lesenswert?

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

von Klaus W. (mfgkw)


Lesenswert?

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.

von Deepdiver99 (Gast)


Lesenswert?

Nicht gerade die klärende Antwort die ich erwartet hatte ;-). Aber das 
mache Neuerungen nicht immer besser sind kommt doch recht häufig vor.

von Arc N. (arc)


Lesenswert?

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=/

von Marwin (Gast)


Lesenswert?

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.

von asdf (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.