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