2009-07-15 1 views
0

Ich habe eine Binärdatei, die schon immer existiert hat. Es hat eine Klasse C, die es auch schon immer gegeben hat. Wir müssen eine neue Methode M in die Klasse C einführen, aber wir wollen nur einige Benutzer über die Existenz solcher Methode M.Entfernen einer kompilierten Methode aus der .h-Datei und ihre Folgen

Durch Entfernen von der .h-Datei solche Methode, welches Problem können wir vorstellen? Wird ein solcher Ansatz rückwärtskompatibel sein?

EDIT: Es ist uns eigentlich egal, ob es eine Möglichkeit gibt, die Methode zu finden. Wir wollen nur sicherstellen, dass nur Leute, die wissen, was sie tun, es benutzen.

Antwort

6

Eine sicherere Methode wäre, einfach eine abgeleitete Klasse zu erstellen und diese nur bestimmten Personen zu geben.

7

Mit den meisten C++ - Compiler: Wenn die Methode virtuell ist, werden Sie in ernsthaften Schwierigkeiten (die vtable wird alles durcheinander); Wenn die Methode NICHT virtuell ist, solltest du es nicht sein (aber ein kluger Benutzer wird die Existenz dessen, was du verstecken willst, durch "Sicherheit durch Dunkelheit" ableiten und Wege finden, die Methode zu verwenden, die du lieber vor ihm verborgen hältst) - Aber das ist eine andere Geschichte ;-).

+1

Beachten Sie, dass es keine Garantie gibt, dass die Klasse weiterhin funktioniert. Aber ja, normalerweise werden Sie damit durchkommen, solange die Funktion nicht virtuell ist. – jalf

+1

Absolut keine Garantie, wie gesagt ("sollte nicht" bedeutet, dass es unwahrscheinlich, aber nicht unmöglich ist - ich erinnere mich an einen IBM "Direct to SOM" -C++ - Compiler, der private/geschützte/öffentliche Dinge auf eine Weise fast garantiert zum Stolpern bringt wenn du JEDES hanky-pakny probierst! -). –

Verwandte Themen