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?

questionAnswers(2)

yourAnswerToTheQuestion