gpt4 book ai didi

c++ - 在 C++ 中调用对象列表的对象方法

转载 作者:太空狗 更新时间:2023-10-29 23:54:05 24 4
gpt4 key购买 nike

我如何设计一种方法来为提供给函数的每个对象调用对象方法?

即,

ResetAll(obj1, obj2, obj3, ...)

将调用 obj1.Reset()obj2.Reset() 等...

对象不在列表或任何其他 STL 容器中。

最佳答案

也许是可变参数模板:

template <typename ...Objs> struct Resetter;

template <typename Obj, typename ...Rest> struct Resetter<Obj, Rest>
{
static inline void reset(Obj && obj, Rest &&... rest)
{
std::forward<Obj>(obj).Reset();
Resetter<Rest...>::reset(std::forward<Rest>(rest)...);
}
};

template <> struct Resetter<> { static inline void reset() { }; };

// Type-deducing helper
template <typename ...Objs> inline void ResetAll(Objs &&... objs)
{
Resetter<Objs...>::Reset(std::forward<Objs>(objs)...);
}

用法:

ResetAll(ob1, obj2, some_obj, another_obj);

关于c++ - 在 C++ 中调用对象列表的对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7981210/

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