Heim >Backend-Entwicklung >C++ >Wie vermeide ich die Unsichtbarkeit öffentlicher Mitglieder und die Wiederholung des Quellcodes in geerbten Klassenvorlagen?
Vermeiden der Unsichtbarkeit öffentlicher Mitglieder und der Wiederholung von Quellcode mit geerbten Klassenvorlagen
In der objektorientierten Programmierung ermöglicht die Vererbung, dass Klassen Eigenschaften und Methoden erben aus ihren Elternklassen. Wenn jedoch Klassenvorlagen eingeführt werden, können abgeleitete Klassen aufgrund der strikten Einhaltung des C-Standards möglicherweise nicht mehr auf öffentliche Mitglieder zugreifen. Dieses Problem kann zu Problemen führen, wenn versucht wird, in abgeleiteten Klassen auf öffentliche Mitglieder zu verweisen.
Vier bestehende Lösungen für dieses Problem wurden vorgeschlagen:
Während diese Lösungen das Problem der Barrierefreiheit beheben können, weisen sie potenzielle Nachteile auf, wie z. B. ausführlichen Code, unterdrückte virtuelle Aufrufe und Nichtportabilität.
Vorgeschlagene erweiterte Lösung
Um die bestehenden Lösungen zu verbessern, ist es möglich, Makros zu nutzen, um Lösung Nr. 3 zu vereinfachen:
<code class="c++">#include <boost/preprocessor.hpp> #define USING_ONE(r, base, member) \ using base::member; #define USING_ALL(base, ...) \ BOOST_PP_SEQ_FOR_EACH(\ USING_ONE, base, \ BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__) \ ) // Near CBase<BYTES> #define USING_CBASE(param) USING_ALL(CBase<param>, Arr, Fn1, Fn2, Fn3, Fn4, Fn5) // In CDerived<BYTES>, in a `public:` section USING_CBASE(BYTES);</code>
Dieser Ansatz muss hinzugefügt werden ein USING_CBASE-Makro in der Nähe der Definition von CBase
Diese Lösung geht auf die Probleme von Lösung Nr. 3 ein, wie z. B. sich wiederholenden Code, indem die using-Anweisungen in Makros gekapselt werden. Durch die Einhaltung der C-Standards bleibt außerdem die Portabilität erhalten. Diese erweiterte Lösung bietet eine präzisere und effizientere Möglichkeit, die Unsichtbarkeit öffentlicher Mitglieder und die Wiederholung des Quellcodes in geerbten Klassenvorlagen zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie vermeide ich die Unsichtbarkeit öffentlicher Mitglieder und die Wiederholung des Quellcodes in geerbten Klassenvorlagen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!