使用声明能否引入一个间接基类的公有成员,而该成员在直接基类中变成私有?
请考虑以下内容:
struct A {
int member;
};
struct B : public A {
private:
using A::member;
};
struct C : public B {
using A::member; // #1
};
Clang、EDG和 MSVC接受这段代码,而GCC拒绝(演示)。如果把第 #1 行改为 using B::member;,所有编译器都会拒绝(演示)。
using声明 #1 是否有效?
解决方案
这是一个久经验证且至今尚未解决的GCC错误。GCC错误地 拒绝 你的第一段代码。以下是原始的错误报告:
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。