Frage

generasacodicetagpre.

Das ist kompiliert, obwohl B privat A. Wenn ich das Erbe von d-Erbe von C entfernt habe, sagt der Compiler, dass ein nicht erreichbar ist, als würde ich erwarten.Also ist das Erbschaft von C, das mein Compiler verwirrt?

Compiler ist GCC 4.4.7

War es hilfreich?

Lösung

sieht aus wie ein echter Compiler-Fehler, da der Standard keinen solchen Zugriff auf

zulässt

11.2 Zugänglichkeit von Basisklassen und Sockelklassenmitgliedern

Auf der Suche nach Beweisen außerhalb des Standards selbst, Whozcraig hat bereits erzeugt, dass CLANG einen solchen Zugang nicht zulässt.

Auf der Suche nach ähnlichen Mustern, die in GCC verwechselt werden könnten, gibt es Diamon-Vererbung mit virtueller Basisklasse A, der einen solchen Zugriff erlaubt hätte, da der Weg der meisten Zugriffe bestimmt, welchen Schutz anwendet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top