Я нашел кучу нитей о проблеме «экземпляр отсюда». Все они, казалось, были людьми, которые создали забыли конструктор по умолчанию. Я думаю, что моя проблема другая (однако я новичок в C++, и это может быть небольшая вариация по одной и той же проблеме, и я просто не знаю, как реализовать это решение).C++, созданный здесь ошибка с std :: set
Я пытаюсь вставить в набор и, по-видимому, он создается оттуда. И это ошибка.
class Node{
public:
bool operator <(const Node& other){
return id < other.id;
}
class Graph {
public:
int poner;
map<string, Node> nodeMap;
set<Node> reachables;
void DepthFirstSearch(Node node){
reachables.clear(); //fine at this point
poner = 0;
DFS(node);
}
private:
void DFS(Node node){
reachables.insert(node); //instantiated from here
}
};
Node.h:131:25: instantiated from here
c:\..... errir: passing 'const Node' as 'this' argument of 'bool Node::operator<(const Node&)' discards qualifiers [-fpermissive]
Любая помощь всегда приветствуется.
Сообщение об ошибке, пожалуйста. Вы отправили небольшую часть. – chris
«экземпляр отсюда» не является ошибкой. Это диагностика - при наличии ошибки шаблона полезно иметь информацию об определении и использовании шаблонов. У вас есть 'operator <' for 'Node'? 'std :: set' требует операции сравнения. – zch
zch, это, наверное, моя проблема ... У меня нет оператора