Я видел это раньше с помощью компилятора SunStudio. По сути, у вас есть такая конструкция:
class ACDate
{
public:
ACDate &operator-(const ACDate &);
};
class ACTime : public ACDate
{
public:
ACTime &operator-(const ACTime &);
};
В соответствии с правилами области видимости C ++ ACTime :: operator скрывает ACDate :: operator- в контексте объекта ACTime. Это вполне нормально, но компилятор SunStudio предупреждает об этой проблеме, поскольку это может быть признаком отсутствия виртуального квалификатора.
Одним из обходных путей в этой ситуации может быть явное «использование ACDate :: operator-» в объявлении класса ACTime, но это может быть не то, что вам нужно.
Еще один, потенциально лучший обходной путь для вашей ситуации, - это сделать оператора свободной функцией друга, но это может привести к другим интересным проблемам.