gpt4 book ai didi

c++ - 具有奇怪的重复模板模式的数组?

转载 作者:太空宇宙 更新时间:2023-11-04 14:21:09 25 4
gpt4 key购买 nike

我有一个基于 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 上工作了对象——用户最好避免完全调用包装器。而且我不能使用可变参数模板,因为我仍然处于 C++0x 之前的世界。

这个问题有已知的解决方案吗,还是我只能使用上面提到的非理想解决方案?

最佳答案

您可以混合使用 CRTP 和多态性。参见 https://stackoverflow.com/a/13868014/1902095

想法是有一个接口(interface)类,BaseHandle ,这将用作相关数组中的多态指针。 HandleT<>将继承上述类并实现通用方法(以及那些因 T 而异的方法)。

关于c++ - 具有奇怪的重复模板模式的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com