gpt4 book ai didi

c++ - 私有(private) typedef 的公共(public)使用是否可移植?

转载 作者:IT老高 更新时间:2023-10-28 22:02:55 28 4
gpt4 key购买 nike

class Settings
{
private:
typedef std::map<std::string, SettingsOption> OptionMap;

public:
typedef OptionMap::iterator iterator;
typedef OptionMap::const_iterator const_iterator;

...
};

此代码可移植吗?关于它的标准规定是什么?

最佳答案

这是合法的,并且 Settings::iteratorSettings::const_iterator 可供 Settings 类的所有用户访问。

C++ 中的访问控制纯粹应用于名称。 ISO/IEC 14882:2011 11 [class.access]/4 中有一个注释和示例清楚地表明这是意图。

[...] [ Note: Because access control applies to names, if access control is applied to a typedef name, only the accessibility of the typedef name itself is considered. The accessibility of the entity referred to by the typedef is not considered. For example,

class A {
class B { };
public:
typedef B BB;
};

void f() {
A::BB x; // OK, typedef name A::BB is public
A::B y; // access error, A::B is private
}

end note ]

关于c++ - 私有(private) typedef 的公共(public)使用是否可移植?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8366584/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com