朋友类无法访问受保护的成员
friend class cannot access protected member
此代码过去可以很好地与Visual Studio 2015配合使用,但现在不再与Visual Studio 15更新1配合使用。
class Foo
{
protected:
virtual ~Foo() {};
friend class Foo__init;
};
class Foo__init
{
public:
Foo _init;
};
static Foo__init _Foo_init;
它失败,并出现以下错误:
Error C2248 'Foo::~Foo': cannot access protected member declared in class 'Foo'
这是编译器错误还是代码格式错误?
从这里开始:
友元声明出现在类主体中,并将函数或其他类访问权限授予友元声明所在类的私有成员和受保护成员。
所以这是一个编译器错误。g++ (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
和Ubuntu clang version 3.6.2-1 (tags/RELEASE_362/final) (based on LLVM 3.6.2)
都编译了这个代码(我添加了int main() {}
)。
这是一个编译器错误。它在VS2008 中工作
相关文章:
- C++:无法访问声明的受保护成员
- 相同的层次结构,访问基类的受保护成员时的行为不同
- 同一模板类但模板类型的受保护成员
- 派生类无法访问基类的受保护成员
- 继承期间受保护成员的皮条
- 如何将超类的受保护成员访问到其派生类. 如果已在派生类中声明了具有相同名称的函数?
- 是否可以基于私有/受保护成员分配类枚举?
- 依赖模板基础的受保护成员
- 无法从派生类型的作用域访问另一个实例的受保护成员
- 为什么我无法使用受保护/私有继承访问派生实例中基类的受保护成员?
- 将对象强制转换为派生类以访问父类的受保护成员
- 使从一个基类派生的类能够使用继承的受保护成员
- 派生类如何使用基类的受保护成员
- 访问派生类C++中的受保护成员
- 访问基类的受保护成员
- 如何访问多个继承类中的受保护成员
- 如何从另一个类的基类访问派生类中的受保护成员
- 无法访问派生类中的基本受保护成员!(在虚函数中)
- 如何通过派生类访问基类的受保护成员?
- 如果孩子不需要父母班级的所有受保护成员,这是不好的班级设计吗?