PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Virtuelle Funktion wird verdeckt!


++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

++C
2003-07-25, 18:57:46
Hat sich erledigt. :) :D