我正在实施快速排序算法。我有一个界面
class Comparable{
public:
virtual int compareTo(Comparable *c)=0;
};
现在我有一个名为ComparableInt的类,它实现了Comparable:
class ComparableInt: public algorithm::Comparable{
public:
int value;
int compareTo(Comparable *i) {
ComparableInt *c = dynamic_cast<ComparableInt*>(i);
return value - (*c).value;
};
ComparableInt(int i):value(i){};
};
我的问题是,这是正确的方法吗?我试着像这样实现它:
class ComparableInt: public algorithm::Comparable{
public:
int value;
int compareTo(ComparableInt *i) {
return value - (*i).value;
};
ComparableInt(int i):value(i){};
};
但似乎这个int compareTo(ComparableInt * i)不是virtual int compareTo(Comparable * c)的实现,所以我必须进行动态转换。寻求你的帮助!
答案 0 :(得分:0)
试试这个:
template<typename T>
class Comparable
{
public:
virtual int compareTo(Comparable<T> *c) = 0;
virtual T getValue() = 0;
};
class ComparableInt: public algorithm::Comparable<int>
{
public:
int value;
int compareTo(Comparable<int> *i)
{
return value - i->getValue();
};
int getValue() { return value; }
ComparableInt(int i):value(i){};
};