Zastanawiam się, dlaczego wywołanie funkcji statycznej jest niejednoznaczne, nawet jeśli jedno z nich jest oczywiście niemożliwe do wywołania, ponieważ jest prywatne. Miałem nadzieję, że będę mógł używać prywatnego/chronionego dziedziczenia, aby pomóc kompilatorowi rozwiązać niejednoznaczność.Dlaczego prywatne dziedziczenie nie rozwiązuje niejednoznaczności funkcji statycznych? (testowane w MSVC)
Czy jest to specyficzne dla MSVC, czy jest to w jakiś sposób określone w standardzie?
struct A
{
static int num() { return 0; }
};
struct B
{
static int num() { return 1; }
};
struct C : public A, private B
{};
int main()
{
C::num(); // Ambiguous access of num
}
tło jest, że próbuje sposób ponowne przeciążenia zachowania (jeden w A) w wielu klas pochodne (C, D, E, F, G) w dziedziczeniu to, aby stosować jakoś zasada Nie powtarzaj się.
kontrola dostępu odbywa się po * * Rozdzielczość przeciążenie –