Интересно, действительно ли это 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 ?
12
Johnmph
22 Ноя 2019 в 20:38
1 ответ
Лучший ответ
Типы не являются ни общедоступными, ни частными. Контроль доступа всегда применяется только к именам . Поскольку PublicInner
является общедоступным именем , которое относится к классу PrivateInner
, его можно использовать вне класса Test
.
14
Brian Bi
22 Ноя 2019 в 17:41
Похожие вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .