可能重复:
内部类可以访问私有变量吗?
因此,我尝试使用优先级队列,并且在此队列的上下文中,如果 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 的情况下解决这个问题。
谢谢!