我是靠谱客的博主 强健黄豆,最近开发中收集的这篇文章主要介绍java短信模板变量参数赋值_在C variadic模板中传递变量参数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

假设我有一个接受变量参数的模板函数,并使用这些参数调用其他函数...

template func(int i, A... args)

{

// do something common

switch (i)

{

case 0: x(args...); break;

case 1: y(args...); break;

case 2: z(args...); break;

default: break;

}

// do something common

}

......其他功能定义为......

void x(int a, int b);

void y(int a, int b); // note: takes same args as x()

void z(std::string a);

这不会编译,因为使用std :: string参数调用func()将找不到带有std :: string参数的x()和y()的匹配项 .

请注意,func()使用一些外部条件(在此示例中为参数i的值)来决定将参数args传递给哪个其他函数 .

有没有办法在不诉诸于将参数args填充到std:tuple并传递它的情况下将其拉出来?

[编辑]

好吧,我想出了一种适合我的目的的方法 . 这是一个示例类来说明......

class X

{

private:

bool a(int) { return true; }

bool b(int) { return true; }

template bool a(const A&...) { return false; }

template bool b(const A&...) { return false; }

public:

template void x(int i, const A&... args)

{

if (i == 0)

{

a(args...);

}

else

{

b(args...);

}

}

};

a()和b()的可变参数模板方法将捕获对X.x()的任何调用,其中参数不是单个int . 这解决了我收到的编译器错误,并启用了我正在寻找的更简单的类API .

最后

以上就是强健黄豆为你收集整理的java短信模板变量参数赋值_在C variadic模板中传递变量参数的全部内容,希望文章能够帮你解决java短信模板变量参数赋值_在C variadic模板中传递变量参数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部