Question

J'ai demandé à mon équipe d'activer à nouveau les avertissements du compilateur. Certains comment tous les avertissements (-w) ont été désactivés (ne demandez pas ...). La plupart d'entre eux sont évidents, mais l'un d'entre eux est vraiment agaçant. Je l'obtiens de mes cours de date et d'heure qui sont utilisés dans beaucoup d'endroits. L'histoire est vraiment simple. Le temps est une sous-classe de Date et les deux ont leurs opérateurs définis. Qu'est-ce qui ne va pas avec ça? Voici l'avertissement que je reçois:

Warning: ACTime::operator- hides the function ACDate::operator-(const ACDate&) const.

Peut-être que quelqu'un pourra me lier les documents décrivant la signification de chacun des avertissements du compilateur SunStudio C ++? Je ne trouve pas ça ... Merci!

Était-ce utile?

La solution

Je peux vous aider avec cet avertissement - il ressemble beaucoup à celui de FAQ C ++ Lite . Avez-vous par hasard changé le type d'argument utilisé par ACTime :: operator- de celui utilisé dans ACDate?

Autres conseils

Je l'ai déjà vu avec le compilateur SunStudio. En gros, vous avez une construction comme celle-ci:

class ACDate
{
   public:
     ACDate &operator-(const ACDate &);
};

class ACTime : public ACDate
{
    public:
    ACTime &operator-(const ACTime &);
};

En raison des règles de portée C ++, ACTime :: operator- cache ACDate :: operator- dans le contexte d'un objet ACTime. C’est plutôt normal, mais le compilateur SunStudio met en garde sur ce problème car il pourrait indiquer un qualificatif «virtuel» manquant.

Une solution de contournement pour cette situation serait un "utilisant ACDate :: operator-" dans la déclaration de classe d'ACTime, mais ce n'est peut-être pas ce que vous voulez.

Une autre solution de contournement potentiellement meilleure pour votre situation consiste à faire de l'opérateur une fonction d'amis gratuite, mais cela pourrait entraîner d'autres problèmes intéressants.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top