我问了关于Multiple inheritance to avoid ambiguity by using scope resolution的问题。我的答案解释B::i
格式正确。
但是,我在c ++ open-std找到了
文档,I2::i
格式错误。
struct D2: I1, I2 {
void f() {
I2::i = 0; // ill-formed per proposal
}
};
那么,我的answer是真的吗?
答案 0 :(得分:4)
你没有正确阅读。请看下面的文字:
在我提出的措辞中,“this”的类不能转换为“B”(限定符被忽略),因此访问是不正确的。糟糕。
我认为以下是正确的表述,因此我们在悉尼讨论的提议决议应包含以下段落,而不是N1543中的段落:
如果E2是非静态数据成员或非静态成员函数,如果 E2 的命名类(11.2)无法明确转换(10.2)到该类,则该程序格式错误其中E2直接成员。
该示例显示了先前提出的措辞存在问题。这是一个专门给出的例子,因为它应该是有效的,以防止它被无效。
答案 1 :(得分:3)
链接的问题指出,特定提案会使引用的代码格式错误。它似乎在说这是一个论点,即该特定提案的确切形式存在缺陷,其目的是改进提案,使其不再破坏该代码。在提案N1626的最终版本中,此示例未显示。将N1626合并到C ++ 11标准似乎解决了这个问题(我不知道为什么它没有在该页面上标记为已解决)。所以不,引用的代码不会变得格格不入。