相关疑难解决方法(0)

如何模板化变量NAMES,而不是类型?

我的问题是关于如何模板化应该使用的类成员的名称.

也许是一个简化的伪示例:

/** 
Does something with a specified member of every element in a List.
*/
template<membername MEMBER> // <-- How to define such thing?
void doSomething(std::vector<MyClass> all){

    for( i=0; i < all.size(); i++)
      all[i].MEMBER++; // e.g.; use all[i].MEMBER in same way

}
Run Code Online (Sandbox Code Playgroud)

class MyClass{
public:
    int aaa, bbb, ccc;
}
Run Code Online (Sandbox Code Playgroud)

和申请:

main(){
    vector<MyClass> all = ....

    // applicate doSomething() to all aaa's
    doSomething<aaa>(all);  // or:
    doSomething<MyClass::aaa>(all); // or:
    doSomething<?????>(all);
}
Run Code Online (Sandbox Code Playgroud)

模板定义应该如何,我可以在doSomething(.)中切换访问/修改MyClass的哪个成员变量(aaa,bbb或ccc)?
在我的真实世界任务中,所有成员都是相同的类型,如上所述.

谢谢,Tebas

c++ templates

13
推荐指数
2
解决办法
7326
查看次数

标签 统计

c++ ×1

templates ×1