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
컴파일 타임에 알려진 이름입니까, 아니면 런타임에 어떻게 든 해결됩니까? –