ユーザー定義の構造体がたくさんあります。それらをA、B、Cとしましょう。
それらを変更することはできず、ログ機能を追加する必要があります。そのため、これらの構造の独自のログ バージョンを追加して、それを支援しました。それらを A_Log、B_Log、および C_Log と呼びましょう。
A、B、または C と呼ばLogState(const T *ptr)
れるメンバー関数を使用してテンプレート StateLogger クラスを作成しています。T
template <typename T>
class StateLogger {
public:
void LogState(const T *ptr);
private:
std::vector<T> requests;
};
この関数では、A_Log/B_Log/C_Log 構造を構築するつもりです。
template<typename T>
void StateLogger<T>::LogState(const T *ptr) {
...
VOODOO myLog = VOODOO(ptr);
}
_Log
に追加するためT
にプリプロセッサマジックを使用できるかどうか疑問に思っていますVOODOO
。したがって、私が使用した場合は、代わりにStateLogger<A>::LogState(a_ptr)
コンパイラが生成するようにしたいと思います。A_Log
Voodoo
テンプレートの特殊化を使用してこれを回避できることはわかっていますが、これについては興味がありました。