J'ai posé une question il y a longtemps about accessing the underlying container of STL adapters. Je suis très utile réponse:Je ne comprends pas cette ligne - déréférencer une adresse de variable membre privé ou quoi?
template <class T, class S, class C>
S& Container(priority_queue<T, S, C>& q) {
struct HackedQueue : private priority_queue<T, S, C> {
static S& Container(priority_queue<T, S, C>& q) {
return q.*&HackedQueue::c;
}
};
return HackedQueue::Container(q);
}
int main()
{
priority_queue<SomeClass> pq;
vector<SomeClass> &tasks = Container(pq);
return 0;
}
Malheureusement, je ne pouvais pas comprendre cette ligne:
return q.*&HackedQueue::c;
Qu'est-ce que cette ligne fait? En outre, comment cette ligne peut-elle accéder au conteneur privé priority_queue
qui est transmis à la fonction Container
?
@curtisk Merci de corriger mon titre :) – AraK
Je pense que vous voudrez peut-être lire sur mon entrée légèrement "sarcastique des fonctionnalités cachées de C++": http://stackoverflow.com/questions/75538/hidden-features-of- c/1065606 # 1065606 :) –
@Alcon, Man ma réponse n'était pas vraiment bonne, je préférais l'effacer, j'apprécie l'homme :) – AraK