C++相談室 part54
■ このスレッドは過去ログ倉庫に格納されています
0288デフォルトの名無しさん
2006/11/07(火) 19:23:51リソース管理クラスの目的で関数ポインタをメンバにしようとしてるんですが、
呼び出し規約が違うと関数ポインタに代入できないようで困ってます。
(今は各規約のポインタとコンストラクタを持ってる)
呼び出し規約ってのはtemplateで決定できないんでしょうか?
#include <windows.h>
template <typename T, typename R = void>
class AutoResource {
T resource;
R (/*WINAPIV*/WINAPI *killFunc)(T);
// ↑ここをtempleateに
public:
AutoResource(T res, R (/*WINAPIV*/WINAPI *func)(T) ) : resource(res), killFunc(func) {}
~AutoResource() { (this->killFunc)(this->resource); }
};
void f(HMODULE h) { FreeLibrary(h); }
int main() {
AutoResource<HMODULE, BOOL> res(LoadLibrary(TEXT("freetype.dll")), FreeLibrary);
//AutoResource<HMODULE> ress(LoadLibrary(TEXT("shell32.dll")), f);
return 0;
}
コンパイラはVC8です
■ このスレッドは過去ログ倉庫に格納されています