可能重复:
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