Problemas com a resolução de sobrecarga const / não-const
Tenho uma classe que se parece com isso:
class ClassA
{
public:
float Get(int num) const;
protected:
float& Get(int num);
}
Fora da classe, chamo a função Get ().
float foo = classAInstance.Get(i);
Espero que isso chame a versão pública, mas o Visual Studio comete erros:
error C2248: 'ClassA::Get' : cannot access protected member declared in class 'ClassA'
Ao comentar a sobrecarga protegida e remover todas as referências a ela, o código é compilad
Por que o compilador tenta usar o membro inacessível quando um membro acessível está disponível? Existe uma maneira aceita de forçar o compilador a escolher a sobrecarga correta? Existe uma referência às regras de resolução para funções-membro em algum lugar?