Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Vererbte template-Funktion in abgeleiteter Klasse überschreiben?!

Mitglied: kingkong

kingkong (Level 2) - Jetzt verbinden

29.07.2010, aktualisiert 23:47 Uhr, 5591 Aufrufe, 5 Kommentare

Mein Problem ist folgendes: Ich habe eine abstrakte Basisklasse, von welcher eine Klasse abgeleitet wird, welche wiederum als Basisklasse für eine weitere Ableitung dient.
Die "Zwischenklasse" bekommt zum einen per "normaler" Quellcode-Datei die Implementierung zu den abstrakten Funktionen, zum anderen per zusätzlicher Quellcode-Datei die Implementierung zu im header deklarierten zusätzlichen template- Funktionen.
Alle Funktionen zusammen werden dann an die letzte Klasse vererbt. Soweit funktioniert das auch alles.

Nun muss aber für die letzte Klasse die Implementierung einer der template-Funktionen der mittleren Klasse geändert werden.
Auf deutsch: Ich müsste die Funktion in der Klasse überschreiben. Das kann ich aber nicht, weil diese ja template-Funktionen sind und deshalb auch" virtual" nicht verwendet werden kann.
Gibt es irgendeine Möglichkeit, nicht alle Funktionen zu vererben oder die Implementierung anderweitig zu ändern?
Der Funktionsname darf sich übrigens nicht ändern und die Klassenabhängigkeit muss auch erhalten bleiben, weil im Quellcode des restlichen Programms die Basisklasse als Interface verwendet wird und je nach Anwendungsfall auch andere abgeleitete Klassen verwendet werden.

Hat jemand einen Rat für mich?

Grüße, kingkong
Mitglied: Guenni
01.08.2010 um 17:34 Uhr
Hi kingkong,

eine template-Funktion ist ja für den Compiler eigentlich nur eine Beschreibung,

wie eine echte Funktion zu generieren ist, wobei Datentypen(Rückgabewert, Parameterwerte)

erst während der Laufzeit festgelegt werden. Von daher ist eine template-Funktion quasi

schon eine Überladung.

Lies dir mal auf dieser Seite http://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Templates/_Funktio ...

den Abschnitt Spezialisierung durch. Eventuell kommst du damit weiter.


Gruß
Günni
Bitte warten ..
Mitglied: kingkong
01.08.2010 um 17:57 Uhr
Hallo Günni,

danke für Deinen Hinweis. Wenn gar nichts anderes möglich ist, dann wäre das tatsächlich eine Alternative. Nun weiß ich aber nicht, ob ich so eine template-Spezialisierung auch in einer abgeleiteten Klasse durchführen kann. Denn die "Zwischenklasse", also die, die die template-Funktionen implementiert, muss weiterhin die nicht geänderte template-Funktion benutzen - und das auch für genau die Datentypen, die (wenn es denn geht) in durch die Spezialisierung in der "untersten" Klasse besondere Aufmerksamkeit bekämen.

Grundsätzlich: Es gibt also keine Möglichkeit, eine Funktion in der Basisklasse irgendwie zu markieren, dass sie nicht vererbt wird?
Bitte warten ..
Mitglied: Guenni
01.08.2010 um 18:36 Uhr
Hi kingkong,

erstmal zu deiner letzten Frage:

Ich habe vor einiger Zeit "meine Bibliothek" mal ausgemistet, besitze trotzdem noch

10 C/C++ Bücher, und über eine Möglichkeit, das Vererben von Funktionen zu verhindern,

bin ich nirgendwo drauf gestoßen.


Das andere Problem:

Nun weiß ich aber nicht, ob ich so eine template-Spezialisierung auch in einer abgeleiteten

Klasse durchführen kann.


Kingkong!!, das läßt sich doch rausfinden: Programmieren und testen


Denn die "Zwischenklasse", also die, die die template-Funktionen implementiert, muss weiterhin

die nicht geänderte template-Funktion benutzen - und das auch für genau die Datentypen, die

(wenn es denn geht) in durch die Spezialisierung in der "untersten" Klasse besondere Aufmerksamkeit bekämen.


Die Möglichkeit, unter C++, Funktionen/Operatoren zu überladen, basiert doch darauf, dass der Compiler sich anhand

unterschiedlicher Kontexte(sprich: Datentypen bei Rückgabewerten/Parametern) die passende Implementation überladener Funktionen

selber raussucht.


Siehe dazu mal meinen Beitrag https://www.administrator.de/%C3%9Cberladen_von_Funktionen_und_Operatore ...

Hier wurde der Operator + zweimal überladen.


Analog dazu würde ich jetzt mal sagen, dass auch bei deiner abgeleiteten Klasse das Original sowie die Spezialisierung(Überladung)

genutzt werden können.


Gruß
Günni
Bitte warten ..
Mitglied: kingkong
01.08.2010 um 18:46 Uhr
Hast ja Recht, dass ich das testen kann. Dachte bloß, dass Du mir vielleicht gleich sagen kannst, dass das nicht geht. Ich habe gerade keine Zeit für Ausprobieren Aber das mach ich dann eben, wenn ich wieder mehr Luft habe... Trotzdem danke.
Bitte warten ..
Mitglied: kingkong
05.09.2010 um 09:48 Uhr
Ergänzung, der Vollständigkeit halber: Ich werde es jetzt mit typeinfo lösen... Damit kann ich quasi in einen Zweig in der Funktion springen, der in der Basisfunktion gar nicht ausgeführt wird. Danke trotzdem für die Hilfe!
Bitte warten ..
Ähnliche Inhalte
C und C++

C-Sharp - Zugriff auf Eigenschaften von vererbter Klasse

gelöst Frage von mabue88C und C++4 Kommentare

Hallo, ich habe mal wieder eine Frage, die für die Profis wahrscheinlich schnell zu beantworten ist. Folgendes Szenario: Ein ...

Java

Methode einer Klasse in einer Klasse aufrufen

gelöst Frage von tomaschkuJava5 Kommentare

Hallo Leute! Heut habe ich mal wieder ein Problem: Ich habe in der Klasse "Haupt" eine reset() Funktion, die ...

Windows Server

Zugriffsrechte auf Ordnerebene werden nicht vererbt

Frage von kafri84Windows Server3 Kommentare

Hallo zusammen, ich habe folgendes Problem: Auf einem Windows Server 2012, der als Dateiserver dient, sind Freigaben für die ...

JavaScript

JQuery, neue Klasse an vorhandene Klasse hängen.

gelöst Frage von d4shoerncheNJavaScript4 Kommentare

Guten Tag, ich erstelle gerade eine neue Webpräsenz für unseren Verein und setze dort Joomla ein. In Joomla bekommt ...

Neue Wissensbeiträge
Windows Server

Windows Server Backup schlögt Fehl -Lösung 2008-2016

Tipp von BiGnoob vor 1 StundeWindows Server

Hi zusammen , ich möchte gerne einen Lösungstipp abgeben für folgenden fehler: lösung ist folgende:

Humor (lol)
Telekom vs. O2 - 3:2
Erfahrungsbericht von the-buccaneer vor 14 StundenHumor (lol)2 Kommentare

Unglaublich aber wahr: Nachdem mein privater Anschluss am 19.04.18 auf VOIP und VDSL umgestellt wurde, hatte ich seitdem 1,5 ...

Batch & Shell

Windows 10 Heimnetzgruppe abgeschaft. Ein Script für einfache Netzwerk - Freigabe im Heimnetzwerk

Anleitung von treehe vor 16 StundenBatch & Shell3 Kommentare

Anleitung für eine einfache Netzwerkfreigabe unter Windows 10 Wie weiter hab mal ein kleines CMD - Script gebastelt. Womit ...

Verschlüsselung & Zertifikate

Efail die II - Warum SMime und PGP der Zeit hinterherhinken

Information von certifiedit.net vor 2 TagenVerschlüsselung & Zertifikate

Guten Morgen, nachdem der letzte Beitrag rege kommentiert wurde, die IT-Republik sich nun darüber streitet ob es nun ein ...

Heiß diskutierte Inhalte
Netzwerke
IP-Adresse am zweiten Domänencontroller fest vergeben - Server verschwunden
Frage von DanielG1974Netzwerke18 Kommentare

Ich hab ein Problem, was ich bisher noch nicht erlebt habe Ich habe erfolgreich einen zweiten Server mit ActiveDirectory ...

Windows Server
Windows Server 2012 - Update - Beim Booten bleibt der Server beim Windows Zeichen stehen
Frage von KeilbachWindows Server14 Kommentare

Hallo Zusammen, ich grüße euch, mein Name ist Michele. Ich bin hier ganz Neu - da ich einfach nicht ...

Windows Tools
Virtueller Drucker gesucht (Schnittstelle: USB oder Seriell)
Frage von chrisButterflyWindows Tools14 Kommentare

Hi, ich suche einen virtuellen Drucker, den ich über eine USB oder serieller Schnittstelle ansprechen kann. Dieser Drucker soll ...

Firewall
Sophos SG 125 nicht mehr erreichbar
Frage von GwaihirFirewall14 Kommentare

Hallo zusammen, ausgerechnet über die Feiertage stimmt etwas mit meiner Firmen-Firewall nicht. Es ist eine Sophos SG 125 und ...