【问题标题】:Public alias for non-public type非公共类型的公共别名
【发布时间】:2020-03-18 19:40:20
【问题描述】:

我想知道它是否是有效的 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 ?

【问题讨论】:

  • 为什么代码无效?

标签: c++ alias access-modifiers


【解决方案1】:

类型 既不是公共的也不是私有的。访问控制只适用于 names。由于PublicInner 是引用PrivateInner 类的公共名称,它可以在Test 类之外使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2018-09-27
    • 1970-01-01
    相关资源
    最近更新 更多