4
我想传入成员变量的名称。我以为我可以做到这一点传入指定类的成员变量
template <typename T::*>
void SetVal(T::* newval)
{
};
这显然不工作,但希望得到我想要做的事。我希望能够设置模板类的某个成员变量。
我想传入成员变量的名称。我以为我可以做到这一点传入指定类的成员变量
template <typename T::*>
void SetVal(T::* newval)
{
};
这显然不工作,但希望得到我想要做的事。我希望能够设置模板类的某个成员变量。
您始终可以将编译定义的常量作为模板参数。所以这里是:
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;
}
你是否需要像SetVal(“age”,3)那样将名称作为字符串传递? – maxpolk 2010-02-10 03:33:05
在编译时已知该名称,还是在运行时以某种方式得到解决? – 2010-02-10 10:46:00