作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要确定一个元素是否与我通过引用传递的元素相同。在函数 Belongs
中,我需要比较 d
is 和存储在动态列表中的元素之间的相等性:
struct Nodo{ Dominio dominio; Rando rango; Nodo* next; };
typedef Nodo* ptrNodo;
ptrNodo pri;
template<class Dominio, class Rango>
bool DicListas<Dominio,Rango>::Belongs(const Dominio &d)
{
bool retorno = false;
if(!EsVacia())
{
ptrNodo aux=pri;
while(aux!=NULL)
{
if(aux->dominio==d)//-------> THIS CLASS DOESN'T KNOW HOW TO COMPARE THE TYPE DOMINIO.
{
retorno = aux->isDef;
}
aux = aux->sig;
}
}
return retorno;
}
最佳答案
无论您为类型参数 Dominio
提供什么类型参数,您都必须重载operator==
对于那种类型。
假设,你这样写:
DicListas<A,B> obj;
obj.Belongs(A());
然后你必须为 A
类型重载 operator==
为:
class A
{
public:
bool operator == (const A &a) const
{
//compare this and a.. and return true or false
}
};
还要注意,如果是成员函数,应该是public
,最好也是const
函数,这样可以比较const 个 A
类型的对象。
除了使它成为成员函数之外,您还可以使 operator==
成为非成员函数:
bool operator == (const A &left, const A & right)
{
//compare left and right.. and return true or false
}
我更喜欢后者。
关于c++ - 如何在 C++ 中比较两个泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518954/
我是一名优秀的程序员,十分优秀!