我有一个基于CRTP的Windows 的包裹。 HANDLE
:
#include <windows.h>
template<class T>
class HandleT
{
HANDLE handle;
operator HANDLE() const { return this->handle; }
static ULONG WaitForMultipleObjects(DWORD count, /* ??? */ objects[])
{
return WaitForMultipleObjects(count, ...);
}
};
class EventHandle : Handle<EventHandle>
{
//...
};
class FileHandle : Handle<FileHandle>
{
//...
};
我的麻烦是,我不知道什么可以取代<代码>? 我可以说是<代码>HandleT<T>,因为它们可以是不同的处理方式,可归入一个阵列。 我不想说<代码>HANDLE,因为这样,该功能就不会在<代码>HandleT的物体上工作——用户可能也完全避免打包。 而且,我可以使用假象模板,因为Im仍然处在C++0x之前的世界。
是否有解决这一问题的已知办法,或者我是否只得使用上述非理想解决办法?