我想传递一个成员变量的名称。我以为我可以做到
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;
}
关于c++ - 传入指定类的成员变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2234053/