Передача в переменные-члены указанного класса - PullRequest
4 голосов
/ 10 февраля 2010

Я хочу передать имя переменной-члена. Я думал, что смогу сделать это

template <typename T::*>
void SetVal(T::* newval)
{

};

Это, очевидно, не работает, но, надеюсь, поможет понять, что я пытаюсь сделать. Я хочу иметь возможность установить определенную переменную-член шаблонного класса.

1 Ответ

2 голосов
/ 10 февраля 2010

Вы всегда можете поместить константу, определяемую компиляцией, в качестве аргументов шаблона. Итак, вот что будет:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...