gpt4 book ai didi

c++ - 是否可以简化这些 C++ 模板参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:31:47 26 4
gpt4 key购买 nike

我有一个带有以下参数的模板类

template <class TObj, class TMsg, void (TObj::*TMethod)( TMsg*, Link*)>
class Slot : ...

当我实例化这个类时,我必须写

Slot<MyObject, MyMessage, MyObject::myMethod> 

这意味着类 MyObject 有一个名为 myMethod 的方法,期望 MyMessage* 作为第一个参数。

有没有一种方法可以简化 Slot 类的实例化,这样我至少可以只指定一次 MyObject 类?

如果可以在方法后指定 TMsg 类型,也会更直观。像下面这样的东西就可以了:

Slot<MyObject::myMethod, MyMessage> 

最佳答案

如果使用 decltype 是一个选项...

template <typename M, typename O, void (O::*Method)(M*, Link*)>
Slot<O, M, Method> slot_type(Method);

然后:

decltype(slot_type<MyMessage>(MyObject::mymethod))

不是...这要短得多...但它确实避免了冗余。

关于c++ - 是否可以简化这些 C++ 模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11243068/

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