ポインターへの参照、またはポインター参照、またはそれを何と呼びたいかについて質問がありますが、最初にいくつかのコードです。まず、抽象比較関数テンプレート クラス:
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
アイデアはありますか?