アカウント名:
パスワード:
#define private public
#include "hoge/hoge.h"
これで秘匿関数呼びたいホーダイ。
このハックってたまに聞くけど、バイナリ互換性って壊れないの?
そもそもprivateな関数を呼ばざるを得ない状況を作り出したクラス設計がマズいのでは。
テスト用コードを作るとき、時々やるかなー隠蔽されている部分のテストは、 めんどくさいときがある。
Javaだとprivateにしたらテストに困るのでパッケージアクセスにしたくなることがありますね。
そんなもん元コメで充分わかってるうえで、オブジェクトやリンカレベルの話をしてるのかなーと。
C++であれば、publicやらprivateやらは、コンパイラがエラーを出すか出さないかのヒント以上の意味はないので、どこにどのようにつけてもバイナリは変らないはず。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
#defineがあれば、何でも出来る (スコア:1)
#define private public
#include "hoge/hoge.h"
これで秘匿関数呼びたいホーダイ。
Re:#defineがあれば、何でも出来る (スコア:0)
このハックってたまに聞くけど、バイナリ互換性って壊れないの?
Re: (スコア:0)
そもそもprivateな関数を呼ばざるを得ない状況を作り出したクラス設計がマズいのでは。
Re: (スコア:0)
テスト用コードを作るとき、時々やるかなー
隠蔽されている部分のテストは、 めんどくさいときがある。
Re: (スコア:0)
Javaだとprivateにしたらテストに困るのでパッケージアクセスにしたくなることがありますね。
Re:#defineがあれば、何でも出来る (スコア:1)
まあ、それも善し悪しではありますが。
-- To be sincere...
Re: (スコア:0)
そんなもん元コメで充分わかってるうえで、オブジェクトやリンカレベルの話をしてるのかなーと。
Re: (スコア:0)
C++であれば、publicやらprivateやらは、コンパイラがエラーを出すか出さないかのヒント以上の意味はないので、どこにどのようにつけてもバイナリは変らないはず。