c++ - 确定方法或成员是否可以 protected 或私有(private)

标签 c++ gcc

可以检查(例如通过 gcc)哪些方法或成员可以移动到 protected 或私有(private)部分?

最佳答案

考虑以下代码部分:

class foo{
    protected:
        void foo_method_1(){};
        int foo_member_var;
};

class bar : public foo{
    void bar_method_1(){
        foo_method_1();
    }
};

如果你想确定 foo 类的哪些成员和方法可以是私有(private)的,你必须将它们全部移动到私有(private)部分。所以它看起来像这样:

class foo{
    private:
        void foo_method_1(){};
        int foo_member_var;
};
...

现在它无法编译,这是 GCC 抛出的第一个错误:

prog.cpp:5:8: error: 'void foo::foo_method_1()' is private
   void foo_method_1(){};

据此您知道,您必须将 foo_method_1 移动到 protected 部分。所以它看起来像这样:

class foo{
    private:
        int foo_member_var;
    protected:
        void foo_method_1(){};
};
...

现在可以编译了。您必须对类中的每个方法和成员重复此过程。对于公共(public)部分,您可以按照上述相同的方式进行操作。

关于c++ - 确定方法或成员是否可以 protected 或私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37274550/

相关文章:

c++ - 将整个 ASCII 文件读入 C++ std::string

php - 在PHP扩展中,推荐的方法从and std::string返回值

c - 编译时是否可以指定相对于用户当前目录的#include 文件路径?

c++ - 静态函数、内联和模板?

c++ - 如何让 CMake 检查我的 header 是否自给自足?

c++ - 采样率偏差和声音播放位置

c++ - 考试题。关于在法庭上如何处理 bool 值

c - GCC 的#pragma 中断

c - 忽略包含文件时,拆分源没有输出,但也没有警告

c - 两个 float 的除法给出了错误的答案