포인터에 대한 참조 또는 포인터 참조 또는 호출 할 내용이 있지만 처음에는 일부 코드와 관련하여 질문이 있습니다. 첫째, 추상적 비교 함수 템플릿 클래스 :포인터 문제에 대한 참조
template <class T> struct BinaryTrivalent {
virtual BinaryTrivalent<T>* clone() const = 0;
virtual int operator()(const T& lhs, const T& rhs) const = 0;
int compare(const int a, const int b) const {
if (a < b)
return LESS_THAN;
else if(a == b)
return MATCH;
return MORE_THAN;
}
};
그리고 그것의 실제 사용 :
struct NodePCompare : public BinaryTrivalent<Node*> {
NodePCompare* clone() const { return new NodePCompare(*this); }
int operator()(const Node*& lhs, const Node*& rhs) const {
return compare(lhs, rhs);
}
};
템플릿 실제 유형에 잘 작동하지만 내가 그것을 예상대로 operator
을 인식하지 않는 것 ~에 그리고 NodePCompare
는 추상적이라고 말해줍니다.
저는이 문제를 과거에 접했지만 문제가 무엇인지 알아 내려고 포기하고 포인터를 다른 유형으로 감쌌습니다.
나는 지금 똑같은 일을 할 수 있었지만 진짜 문제가 무엇인지 이해하고 싶습니다.
나는이 문맥에서 정확히 *&
이 무엇을 의미하는지에 대해 읽었으며, 정확하게 이해하지 못한다면이 은이 잘 동작해야합니다.
이 링크는 조금 이해하는데 도움이되었습니다. http://markgodwin.blogspot.co.il/2009/08/c-reference-to-pointer.html
아이디어 누구?
'NodePCompare'의'operator()'는'virtual'이어야합니다. –
암시 적으로 가상입니다.'virtual' 키워드를 직접 기억할 수는 있지만 컴파일러에서는 필요하지 않습니다. – Jack
@ 잭 : 맞아, 그걸 잊었다 –