我想知道为什么对静态函数的调用是模棱两可的,即使两者之一显然不可能调用,因为它是私有的。我希望我可以使用私有/受保护的继承来帮助编译器解决歧义。
它是特定于 MSVC 还是在标准中以某种方式指定?
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
}
背景是我试图通过继承它来重用许多派生类(C,D,E,F,G)中的重载行为(A中的行为),以某种方式遵守不重复的规则你自己。