la mia domanda è su come definire il modello nome di un membro della classe che dovrebbe essere utilizzato.Come modellare il nome della variabile NAMES, non i tipi?
Forse un semplificata & esempio pseudo:
/**
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
}
e
class MyClass{
public:
int aaa, bbb, ccc;
}
e l'applicazione:
main(){
vector<MyClass> all = ....
// applicate doSomething() to all aaa's
doSomething<aaa>(all); // or:
doSomething<MyClass::aaa>(all); // or:
doSomething<?????>(all);
}
Come dovrebbe la definizione del modello sembra, che posso cambiare, che la variabile membro (aaa, bbb o ccc) di MyClass è accessibile/modificato in do Qualcosa(.) ?
Nel mio compito del mondo reale tutti i MEMBER sono dello stesso tipo, come sopra.
Grazie, Tebas
Grazie. Chiamare "tutto" in base al valore era per la semplificazione della domanda ... ma è una chiamata per riferimento richiesta dai modelli di puntatore membri? o posso anche usare una copia? – Tebas
@Tebas: è possibile utilizzare una copia, ma ciò significa che l'effetto di 'doSomething' non sarà visibile al di fuori della funzione. La chiamata per riferimento è stata utilizzata per garantire che il risultato fosse visibile nel vettore del chiamante. –
@Tebas: No, non fa alcuna differenza. In entrambi i casi tutto [i] sarà un'espressione lvalue di tipo MyClass. – sellibitze