【发布时间】:2012-01-09 23:37:33
【问题描述】:
我想知道我们是否可以有这样的课程(伪代码):
template <class Arg1T, ... class ArgNT>
class my_class
{
public:
my_class(Arg1T Arg1, std::string Arg1_name ... ArgNT ArgN, std::string ArgN_name){}
};
如果我们可以在编译时为每个提供的参数类型自动生成一个函数,例如使用定义来获得类似(伪代码):
template <class Arg1T, ... class ArgNT>
class my_class
{
public:
my_class(Arg1T Arg1, std::string Arg1_name ... ArgNT ArgN, std::string ArgN_name){}
// for each Arg we want to create a function like
ArgMT my_class_function(std::string name)
{
if(name == ArgM_name)
return ArgM;
}
};
在现代 C++ 中是否有这种/或有点类似的事情以及如何创建它?
我想说的是:我想为从某个函数模板提供给构造函数的每个类类型生成函数。并想知道如何做这样的事情?这里显示了how to repeat,但是如何重复提供给类参数和类型?
我的意思是,如果我们知道类模板参数 (N) 的数量,我们可以创建不同类型的 N 变量(每个参数一个)和 N 字符串(都是私有的),所以我们可以为那个(字符串+变量)的setter和getter创建N函数(我们将在构造函数中调用)。这里的主要问题是 - 如何解决两次或更多相同类型的问题,如何从 boost.preprocessor 获取 args 数量,如何过滤相同类型?
【问题讨论】:
-
您能澄清一下您要做什么吗?我现在看到的是基于返回类型的重载函数。
-
参见stackoverflow.com/questions/203667/…(和 Boost 参数库)
-
@sehe:参数库似乎完全不相关......并且没有提供任何返回类型的帮助
标签: c++ templates boost code-generation boost-preprocessor