我需要确定一个元素是否与我通过引用传递的元素相同.在函数中,Belongs我需要比较dis和动态列表中存储的元素之间的相等性:
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;
}
Run Code Online (Sandbox Code Playgroud)
无论您为类型参数提供什么类型参数 Dominio,您都必须operator==为该类型重载。
假设你这样写:
DicListas<A,B> obj;
obj.Belongs(A());
Run Code Online (Sandbox Code Playgroud)
那么你必须重载operator==类型A为:
class A
{
public:
bool operator == (const A &a) const
{
//compare this and a.. and return true or false
}
};
Run Code Online (Sandbox Code Playgroud)
另请注意,public如果它是成员函数,则应该是,并且最好使其也const起作用,以便您可以比较type 的const对象A。
除了使其成为成员函数之外,您还可以创建operator==一个非成员函数:
bool operator == (const A &left, const A & right)
{
//compare left and right.. and return true or false
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢后者。