2008-03-28 [長年日記]

[C++] GetProcAddressの戻り値をキャストしなくて済むようにする

GetProcAddressで戻り値をキャストするのが面倒くさいので少し考えてみた

こんな感じでどうでしょう。

struct ProcAddress {
  ProcAddress(HMODULE module, LPCSTR name) : p_(0) {
    p_ = ::GetProcAddress(module, name);
  }
  template<class T> operator T() const { return reinterpret_cast<T>(p_); }
  FARPROC p_;
};

こうやって使います。

HMODULE module = 0;
typedef void (__stdcall *Func)();
Func f = ProcAddress(module, "test");

トップ «前の日記(2008-03-05) 最新 次の日記(2008-04-20)»