可能重複:
Can inner classes access private variables?比較C++和優先級隊列
所以我試圖用一個優先級隊列,並在此隊列的方面,我想定義如果D [i] < D [j],則整數i比另一個整數j「小於」。我怎樣才能做到這一點? (d是一個對象的數據成員)
到目前爲止,我有
/* This function gets the k nearest neighbors for a user in feature
* space. These neighbors are stored in a priority queue and then
* transferred to the array N. */
void kNN::getNN() {
int r;
priority_queue<int, vector<int>, CompareDist> NN;
/* Initialize priority queue */
for (r = 0; r < k; r++) {
NN.push(r);
}
/* Look at the furthest of the k users. If current user is closer,
* replace the furthest with the current user. */
for (r = k; r < NUM_USERS; r++) {
if (NN.top() > r) {
NN.pop();
NN.push(r);
}
}
/* Transfer neighbors to an array. */
for (r = 0; r < k; r++) {
N[r] = NN.top();
NN.pop();
}
}
而且在kNN.hh:
class kNN {
private:
struct CompareDist {
bool operator()(int u1, int u2) {
if (D[u1] < D[u2])
return true;
else
return false;
}
};
...
然而,這是給我的錯誤
kNN.hh: In member function ‘bool kNN::CompareDist::operator()(int, int)’:
kNN.hh:29: error: invalid use of nonstatic data member ‘kNN::D’
我該怎麼辦?似乎C++不喜歡它,如果我參考比較器中的特定對象,但我不知道如何解決這個問題,而不用參考D.
謝謝!
這個問題實際上不是關於優先級隊列和比較器,但關於內部類如何訪問包圍類數據成員:HTTP ://stackoverflow.com/questions/486099/can-inner-classes-access-private-variables,http://stackoverflow.com/questions/1604853/nested-class-access-to-enclosing-class-private-data - 成員 – jogojapan