c++ - 非公共(public)类型的公共(public)别名

标签 c++ alias access-modifiers

我想知道它是否是有效的 C++:

class Test {
    struct PrivateInner {
        PrivateInner(std::string const &str) {
            std::cout << str << "\n";
        }
    };

public:
    using PublicInner = PrivateInner;
};

//Test::PrivateInner priv("Hello world");        // Ok, private so we can't use that
Test::PublicInner publ("Hello World");           // ?, by using public alias we can access private type, is it ok ?

最佳答案

类型既不是公共(public)的也不是私有(private)的。访问控制仅适用于名称。由于 PublicInner 是引用 PrivateInner 类的公共(public)名称,因此可以在 Test 类之外使用它。

关于c++ - 非公共(public)类型的公共(public)别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58999218/

相关文章:

c++ - "using"关键字 - 将迭代器传递给函数

c# - 可以为属性的 get 和 set 访问器指定单独的访问修饰符吗?

java - 方法中的最终变量

c++ - 如何使用 C++ 在 Windows 和 Linux 中获取 iSCSI 启动器名称

c++ - 如何在 gtk+ c 中的回调之间进行通信

c++ - wxWidgets中快速设置事件转发的方法?

c++ - clang++: 标准头文件中的错误

c# - C#中String和string有什么区别?

sql - PostgreSQL 不接受 WHERE 子句中的列别名

C# 内部 getter,具有内部类参数的 protected setter