2009-07-15 5 views
0

私は常に存在していたバイナリを持っています。それは常に存在していたクラスCを持っています。新しいメソッドMをクラスCに導入する必要がありますが、一部のユーザーにはそのメソッドの存在を認識させたいだけです。.hファイルからコンパイルされたメソッドを削除し、その結果を

このようなメソッドを削除することで、どのような問題を導入できますか?そのようなアプローチは下位互換性がありますか?

編集:メソッドを見つける方法があるかどうかは実際には気にしません。私たちは、彼らが何をしているのかを知っている人だけがそれを使用していることを確認したいだけです。

答えて

6

より安全な方法は、派生クラスを作成し、それを特定の人のみに与えることです。

7

ほとんどのC++コンパイラの場合:メソッドが仮想の場合、重大な問題になります(vtableはすべて乱されます)。メソッドがバーチャルでない場合、あなたはそうすべきではありません(しかし、スマートユーザは、 "暗黙のセキュリティ"を介して隠そうとしているものの存在を推測し、 - それは別の話です;-)。

+1

クラスがまだ動作するという保証はありません。しかし、ええ、一般的には、関数が非仮想である限り、おそらくそれを離れます。 – jalf

+1

私が言ったように(「そうすべきではありませんが、不可能ではないことを意味するべきではありません」と私は言っていました)IBMを「直接SOM」C++コンパイラーが思い出して、もしあなたがどんなハンキーパッキーをしようとしていたら! –

関連する問題