++C
2003-07-25, 12:55:34
Hallo zusammen!
Wisst Ihr ne bessere Möglichkeit den Vergleichsoperator zu implementieren?
class base
{
public:
base(short val){baseVal=val;}
~base(){}
friend base;
virtual bool operator==(const base& obj)
{
return( baseVal == obj.baseVal );
}
private:
short baseVal;
};
class A : public base
{
public:
A(short val1, short val2) : base(val2)
{
aVal=val1;
}
bool operator==(const A& obj)
{
return( (aVal == obj.aVal ) && base::operator==(obj) );
}
private:
short aVal;
};
Denn beim obigen Beispiel ist die Parametrisierung offenbar nicht ganz einwandfrei!
Der Compiler (IDE=BCB6) gibt mir folgende Warnmeldung aus:
A::operator==(const A&) verbirgt virtuelle Funktion base::operator==(const base&)
Klar, die Parametrisierung des Vergleichsoperators unterscheidet sich zwischen 'base' und 'A'. Nur wie kann man das Problem anders lösen?
Danke!
Grüße,
++C
Wisst Ihr ne bessere Möglichkeit den Vergleichsoperator zu implementieren?
class base
{
public:
base(short val){baseVal=val;}
~base(){}
friend base;
virtual bool operator==(const base& obj)
{
return( baseVal == obj.baseVal );
}
private:
short baseVal;
};
class A : public base
{
public:
A(short val1, short val2) : base(val2)
{
aVal=val1;
}
bool operator==(const A& obj)
{
return( (aVal == obj.aVal ) && base::operator==(obj) );
}
private:
short aVal;
};
Denn beim obigen Beispiel ist die Parametrisierung offenbar nicht ganz einwandfrei!
Der Compiler (IDE=BCB6) gibt mir folgende Warnmeldung aus:
A::operator==(const A&) verbirgt virtuelle Funktion base::operator==(const base&)
Klar, die Parametrisierung des Vergleichsoperators unterscheidet sich zwischen 'base' und 'A'. Nur wie kann man das Problem anders lösen?
Danke!
Grüße,
++C