まず第一に、私は第一人者のC++プログラマーではないと言わせてください。私はC++で数年の経験がありますが、私の主な分野は.NET / C#です。
C++で動的プロキシ/ラッパークラスを作成する方法を検討しています。特に、私が達成したいのは、メソッド呼び出しをインターセプトすることです。この種のトリックはJava/.NETの世界では一般的ですが、C++にはReflectionがありません。
ラッパーを作成し、->演算子のオーバーロードを介してメソッド呼び出しをインターセプトする方法を説明するオンラインチュートリアルを見つけました。
class Person{
std::string mName;
Person(std::string pName): mName(name){}
void printName(){
std::cout << mName << std::endl;
}
};
template <class T >
class Wrap {
T * p ;
public:
Wrap (T * pp ) :p (pp) { }
Call_proxy <T> operator ->() {
prefix ();
return Call_proxy<T>(p);
}
};
template <class T >
class Call_proxy {
T * p ;
public :
Call_proxy (T * pp ) :p (pp ){ }
˜Call_proxy () {
suffix ();
}
T * operator ->() {
return p ;
}
};
このサンプルからわかるように、呼び出しの前後にメソッド呼び出しイベントをキャッチできますが、私にとって明確ではないのは、どのメソッドが呼び出されているかを検出する方法です。それは可能ですか?
ありがとう
アップデート
わかりました。わかりやすくするために、実装が本当に動的であるかどうかは気にしません。スマートポインタに似たラッパークラスを持つことは私にとっては問題ありません。