Ich habe vor kurzem eine Frage gestellt about accessing the underlying container of STL adapters. Ich habe eine sehr hilfreiche Antwort:Ich kann diese Zeile nicht verstehen - Dereferenzierung einer Adresse der privaten Mitgliedsvariablen oder was?
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;
}
Leider konnte ich nicht verstehen, diese Zeile:
return q.*&HackedQueue::c;
Was bedeutet diese Linie tun? Wie könnte diese Zeile auch auf den privaten Container in priority_queue
zugreifen, der an die Funktion Container
übergeben wird?
@curtisk Dank meinen Titel für die Korrektur :) – AraK
Ich denke, man könnte meinen über etwas sarkastisch „versteckte Features von C++“ Eintrag lesen möchten: http://stackoverflow.com/questions/75538/hidden-features-of- c/1065606 # 1065606 :) –
@Alcon, Man meine Antwort war nicht wirklich gut, ich zog es vor, es zu löschen, ich schätze es Mann :) – AraK