之前写的有篇文章是用方法实现的变长参数,这边就是用类实现的,更加高大上,这样就可以对不同的实例对象进行处理。
下面是《深入理解C++11》书中的截图


下面是自己实现的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| template < typename... Args> class MultiArgs;
template <> class MultiArgs<> {};
template < typename T, typename... Args> class MultiArgs<T, Args...> : public MultiArgs<Args...> { public: MultiArgs(T _t, Args... _args) : MultiArgs<Args...>(_args...) { value = _t; std::cout << "--- addr:0x" << this << ", value:" << _t << std::endl; } public: T value; };
template <typename... Args> void sendMsg(Args... _args) { int argsLength = sizeof...(Args); std::cout << "--- _args length:" << argsLength << std::endl; MultiArgs<Args...> ma(_args...); }
void testArgsForClass() { sendMsg(111, "yang", 22.22f, true); }
|