我有一个从派生类Base派生的类Derived。在Derived的函数中,我可以访问Base的受保护成员。例如,我可以做到这一点。当从派生类访问基类成员时,强制使用范围解析运算符
class Base
{
protected:
int i;
}
class Derived : class Base
{
void process()
{
i = 5;
}
}
我的问题是,是否有可能在从派生类访问基类成员时强制使用范围解析运算符?原因是我想在代码中清楚哪些变量来自基类。执法是这样,我不会意外跳过范围解决运算符(我粗心)。我更喜欢不使用访问器,因为基类中的许多成员在Derived类中是必需的,这使得代码很繁琐。我正在使用MSVC 2010。
class Base
{
protected:
int i;
}
class Derived : class Base
{
void process()
{
Base::i = 5; //enforce so that i=5 won't compile
}
}
为什么......你要做到这一点?如果您对保护成员不满意,请勿使用它们。 – 2010-10-08 08:00:35
我建议阅读Herb Sutter的GotW关于封装的文章。总结一下:[“编写公共或受保护的数据成员从未有充分的理由”](http://www.gotw.ca/gotw/070.htm) – 2010-10-08 08:02:44
这比调用保护程序更好的“文档”成员“base_i”等...? (丑陋,但这是你做的麻烦; -P)。 – 2010-10-08 08:53:47