Considérez ce code:
struct A
{
void foo() const
{
std::cout << "const" << std::endl;
}
private:
void foo()
{
std::cout << "non - const" << std::endl;
}
};
int main()
{
A a;
a.foo();
}
L'erreur du compilateur est:
erreur: 'void A :: foo ()' est privé`.
Mais quand je supprime le privé, cela fonctionne. Pourquoi la méthode public const n'est-elle pas appelée lorsque la méthode non-const est privée?
En d'autres termes, pourquoi la résolution des surcharges passe-t-elle avant le contrôle d'accès? Cela est étrange. Pensez-vous que c'est cohérent? Mon code fonctionne, puis j'ajoute une méthode, et mon code de travail ne se compile pas du tout.