【发布时间】:2009-01-25 15:36:43
【问题描述】:
我不能在我的基类中调用受保护的函数。为什么?它看起来像这样:
class B : B2
{
public:
virtual f1(B*)=0;
protected:
virtual f2(B*) { codehere(); }
}
class D : public B
{
public:
virtual f1(B*b) { return f2(b); }
protected:
virtual f2(B*b) { return b->f2(this); }
}
在 msvc 中,我收到错误 error C2248: 'name::class::f2' : cannot access protected member declaration in class 'name::class'
在 gcc 中出现错误:'virtual int name::class::f2()' is protected.
这是为什么呢?我认为受保护成员的意义在于派生类可以调用。
【问题讨论】:
-
至少添加将编译并生成您希望我们修复的错误的代码。上面的代码有很多其他的语法错误,解决你的问题变得无关紧要。
-
我同意马丁的观点。如果您希望我们帮助您,请花一些时间编写您的代码 c++(不要省略返回类型、分号和其他内容)
标签: c++ inheritance