我有一个关于指针引用、指针引用或任何你想调用它的问题,但首先是一些代码。一、抽象比较函数模板类:
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
任何人的想法?