c++ - 使用模板参数设置特定成员

标签 c++ templates

假设我有这个:

    struct myStruct {
    int A;
    int B;
}

是否可以像这样通过模板参数设置特定成员?

void setTo10<?? member>(myStruct& obj) {
obj.member = 10;
}

//用法:

setTo10<"member A">(obj);

我知道使用宏是可能的,但是模板怎么样?

谢谢

最佳答案

是这样的吗?

struct myStruct {
  int A;
  int B;
};

template <typename T, typename V>
void set(T& t, V T::*f, V v)
{ t.*f = v; }

int main()
{
  myStruct m;
  set(m, &myStruct::A, 10);
  std::cout << m.A << '\n';
}

关于c++ - 使用模板参数设置特定成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14143567/

相关文章:

C++ 函数的时间测量

c++ - Flex C++ - #ifdef inside flex block

c++ - 模板结构中的枚举

C++11:如何获取指针或迭代器指向的类型?

C++:直接在参数列表中使用数组文字的对象构造函数

C++:为什么这些函数使用 vector 的不同拷贝?

c++ - 严格相同的数组输入

c++ - "No matching function"模板函数接受回调

c++ - 在C++中的模板实例化中将带有构造函数的类用作类型参数

C++模板类和继承