【发布时间】:2014-12-28 18:56:35
【问题描述】:
我想知道为什么对静态函数的调用是模棱两可的,即使两者中的一个显然不可能调用,因为它是私有的。 我希望我可以使用私有/受保护的继承来帮助编译器解决歧义。
它是特定于 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 中的行为)的方法,以某种方式遵守 Don 的规则不要重复自己。
【问题讨论】:
-
访问检查在之后重载决议完成
标签: c++ static-methods ambiguous-call private-inheritance