мой вопрос в том, как шаблонное имя члена класса, которое должно использоваться.
Может быть, упрощенный и псевдо-пример:
/**
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
}
и
class MyClass{
public:
int aaa, bbb, ccc;
}
и приложение:
main(){
vector<MyClass> all = ....
// applicate doSomething() to all aaa's
doSomething<aaa>(all); // or:
doSomething<MyClass::aaa>(all); // or:
doSomething<?????>(all);
}
Как должно выглядеть определение шаблона, что я могу переключить, какая переменная-член (aaa, bbb или ccc) MyClass доступна или изменена в doSomething (.)?
В моей реальной мировой задаче все ЧЛЕНЫ имеют тот же тип, что и выше.
Спасибо, Tebas