Pergunta

Eu falei a minha equipe para ligar os avisos do compilador novamente. Alguns como todos os avisos (w) foram desativados (não pergunte ...). A maioria deles são óbvios, mas um deles é realmente irritante. Eu obtê-lo de meus data e hora classes que são usados ??em muitos lugares. História é realmente simples. O tempo é subclasse de Data e ambos têm seus operadores definidos. O que pode estar errado com isso? Aqui está o aviso que eu recebo:

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

Talvez alguém pode me ligar os documentos que descrevem o que cada um dos SunStudio C ++ avisos do compilador significa? Não consigo encontrar esse ... Obrigado!

Foi útil?

Solução

Eu posso ajudá-lo com esse aviso em particular - ele se parece muito com um presente de C ++ FAQ Lite . Fez-lhe pela mudança chance do tipo de argumento que usos ACTime :: operadora daquele em ACDate?

Outras dicas

Eu já vi isso antes com o compilador SunStudio. Basicamente, você tem uma construção como esta:

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

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

Devido ao C ++ escopo regras, ACTime :: operator- peles ACDate :: operadora no contexto de um objeto ACTime. Isso é muito normal, mas o compilador SunStudio adverte sobre este problema, pois pode ser um sinal de um qualificador de 'virtual' em falta.

Uma solução para esta situação seria um explícita 'usando ACDate :: operator-' na declaração da classe de ACTime, mas que pode não ser o que quiser.

Outra, potencialmente melhor solução para a sua situação é fazer com que a operadora uma função amigo livre, mas isso pode levar a outros problemas interessantes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top