Frage

sprach ich mein Team in Anschalten Compiler-Warnungen wieder. Einige, wie alle Warnungen (-W) wurden deaktiviert (nicht fragen ...). Die meisten von ihnen liegen auf der Hand, aber einer von ihnen ist wirklich ärgerlich. Ich erhalte es von meinem Datum und Zeitklassen, die an vielen Orten verwendet werden. Geschichte ist wirklich einfach. Es ist Unterklasse von Datum und beide haben ihre Betreiber definiert. Was kann daran falsch sein? Hier ist die Warnung, die ich bekommen:

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

Vielleicht kann mir jemand die Dokumentation verknüpfen beschreiben, was jeder von SunStudio C ++ Compiler-Warnungen bedeuten? Ich kann nicht finden, diese ... Danke!

War es hilfreich?

Lösung

Ich kann Ihnen mit dieser speziellen Warnung helfen - es viel wie dieser sieht von C ++ FAQ Lite . Hast du zufällig den Typ des Arguments ändern, dass actime :: operator- von dem in ACDate verwendet?

Andere Tipps

Ich habe dies vor mit dem Compiler SunStudio gesehen. Grundsätzlich haben Sie ein Konstrukt wie folgt aus:

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

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

Aufgrund der C ++ Scoping-Regeln, actime :: operator- versteckt ACDate :: operator- im Rahmen eines actime Objekt. Das ist ziemlich normal, aber der SunStudio Compiler warnt vor diesem Problem, da es könnte ein Zeichen eines fehlenden ‚virtuellen‘ Qualifier sein.

Eine Abhilfe für diese Situation wäre ein explizite sein ‚mit ACDate :: operator-‘ in actime der Klassendeklaration, aber das ist vielleicht nicht das, was Sie wollen.

Ein andere, möglicherweise bessere Abhilfe für Ihre Situation ist die betreiber eine freie friend-Funktion zu machen, aber das zu anderen interessanten Problemen führen könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top