Auf Kompilierung aufgerufen werden, erhalte ich dieseFehler: Verweis auf nicht-statische Member-Funktion muss
error: reference to non-static member function must be called
std::sort(sortedCOPG_.begin(),sortedCOPG_.end(),comp_copgNode);
jemand lassen Kann mir als das, was ich falsch mache? Ich habe fast den gleichen Code ohne die Klassen versucht, aber dort hatte der Code keine Probleme. Es ist erst nachdem ich den Code in einer Klasse gekapselt habe. Ich habe viel Code entfernt, bevor ich hier poste, um die Dinge einfach zu halten. Ich habe andere ähnliche Beiträge ausprobiert, konnte aber keinen Sinn daraus machen.
#include <fstream>
#include <set>
#include <unordered_map>
class Computation {
public:
Computation() {
}
private:
struct copgNode_ {
double weight;
int source;
int target;
};
template <typename Iter>
void mst_score__(Iter first, Iter last) {
Iter current = first;
for (; current != last; ++current) {
for (int i=0; i < n_; ++i) {
if (adjMatrix_[*current][i] != 0) sortedCOPG_.push_back(copgNode_{adjMatrix_[*current][i],*current,i});
}
}
//Here, is the line causing errors---
std::sort(sortedCOPG_.begin(),sortedCOPG_.end(),comp_copgNode);
}
void m_init_computation__() {
std::vector<int> mst_test_vec{0,3,7};
mst_score__(mst_test_vec.begin(),mst_test_vec.end());
}
bool comp_copgNode (const copgNode_& left, const copgNode_& right) {return left.weight < right.weight;}
};
'comp_copgNode' ist ein nicht-StatC Member-Funktion, können Sie nicht so darauf verweisen. (Wie würde "sortieren" wissen, an welchem Objekt es aufgerufen wird?) Die einfachste Lösung wäre, die Funktion "statisch" zu machen, wenn sie nicht von einer bestimmten Instanz abhängt. –
Woher kommt 'sortedCOPG'? – tadman
@ M.M: Also sollte ich diesen Operator verwenden, um es zu referenzieren? – letsBeePolite