"여기에서 인스턴스화되었습니다"라는 문제에 대해 많은 스레드가 있습니다. 그들은 모두 기본 생성자를 잊어 버린 사람들로 보입니다. 나는 내 문제가 다르다고 생각한다. (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
"여기서부터 인스턴스화"는 오류가 아닙니다. 진단 적입니다. 템플릿 오류가 발생하면 템플릿 정의와 사용에 대한 정보를 얻는 것이 도움이됩니다. 'Node'에'operator <'가 있습니까? 'std :: set'은 비교 연산이 필요합니다. – zch
zch, 그건 아마 내 문제입니다 ... 나는 <연산자가 없습니다. 나는 내가 집에 갈 때 그것을 점검 할 것이다. –