gpt4 book ai didi

c++ - c++中的纯比较函数

转载 作者:行者123 更新时间:2023-11-30 03:01:41 25 4
gpt4 key购买 nike

我想创建一个通用的排序链表。因此,我有一个抽象类数据,带有一个纯运算符<(为了轻松地对列表进行排序。我相信它被称为比较器。)现在我有一个类作业,它派生自数据并实现运算符。当我尝试创建一个工作列表并发现该工作也是抽象的时,问题就出现了。发生这种情况是因为我在 Job 中编写的运算符没有与 Data 中完全相同的签名 -在数据中:

virtual bool operator<(const Data& other) const =0;

在工作中:

virtual bool operator<(const Job& other) const;

我必须在工作的运营商中接受工作,因为我无法将工作与通用数据进行比较。但是现在新的运算符只是隐藏了旧的运算符而不是覆盖它(或者实现它因为它是纯粹的)。如何在不使用向下转型的情况下解决问题?谢谢!编辑:没有模板。

最佳答案

不使用向下转换...似乎是模板的工作。

您可以直接使用运算符强制实现比较函数,而不必将其声明为纯虚拟。而且它也是通用的。

相同的结果,不同的方法。更大的灵 active ,因为您不必从某些东西派生(如果您开始使用多重继承,这可能会变得很痛苦)。

template<typename T>
class SortedLinkedList
{
T* head;
void insertItem(const T& item)
{
T* currentNode = head;
//iterate
{
if ( *currentNode < item ) // force implementation of operator <
{ /* whatever */ }
}
}
};

关于c++ - c++中的纯比较函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10840091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com