c++ - 从派生类访问基类成员时强制使用范围解析运算符

标签 c++ visual-studio

我有一个 Derived 类,它派生自 Base 类。在 Derived 的函数中,我可以访问 Base 的 protected 成员。例如,我可以做到这一点。

class Base
{
protected:
    int i;
}

class Derived : class Base
{
    void process()
    {
        i = 5;
    }
}

我的问题是,在从派生类访问基类成员时是否可以强制使用范围解析运算符?原因是我想在代码中明确哪些变量来自基类。强制执行是为了让我不会不小心跳过范围解析运算符(我很粗心)。我不喜欢使用访问器,因为派生类中需要许多来自基类的成员,这使得编码变得乏味。顺便说一句,我正在使用 MSVC 2010。

class Base
{
protected:
    int i;
}

class Derived : class Base
{
    void process()
    {
        Base::i = 5;   //enforce so that i=5 won't compile
    }
}

最佳答案

你可以通过引入另一个范围来模拟它:

class Base {
protected:
    struct Data {int i;};
    Data d_Base;
};

class Derived : class Base {
    void process() {
        d_Base.i = 5;
    }
};

关于c++ - 从派生类访问基类成员时强制使用范围解析运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888679/

相关文章:

c# - 在 CPU 密集型计算中需要 Blazor Wasm 性能改进

visual-studio-2010 - VS2010工具栏加载时间太长

windows - Visual Studio 2017 : open AND build solution from a command line call

c++ - 为什么 C++ 语法如此复杂?

c++ - 从文件创建类

c++ - 如何使用 rand_r 以及如何以线程安全的方式使用它?

c++ - 将包含数组的 BSON 文档转换为 JSON,从转换后的 JSON (C++) 中删除数组

c++ - 动态与非动态类成员

visual-studio - 使用组织帐户而不是 Microsoft 帐户登录 Visual Studio

visual-studio - 从visual studio 2005升级到visual studio 2010