传入指定类的成员变量

时间:2010-02-10 02:37:14

标签: c++ templates pointers

我想传递成员变量的名称。

我认为我可以做到这一点
template <typename T::*>
void SetVal(T::* newval)
{

};

这显然不起作用,但希望能够实现我想要做的事情。我希望能够设置模板化类的某个成员变量。

1 个答案:

答案 0 :(得分:2)

您始终可以将编译定义的常量作为模板参数。所以这就是:

template <typename T, typename R, R T::* member>
R& SetVal(T& t, const R& value)
{
   t.*member = value;
   return t.*member;
}

struct A
{
  int a;
};

int main()
{
  A a;
  SetVal<A,int,&A::a>(a, 10);
  return 0;
}