提问人:saxbophone 提问时间:6/6/2022 最后编辑:saxbophone 更新时间:6/6/2022 访问量:196
拥有具有私有类型的公共成员有什么意义吗?
Is there any point in having a public member with a private type?
问:
请考虑以下 C++ 代码,其中 member 具有私有类型:foo
class Object {
private:
struct MyPrivateThing {
long double Member;
};
using Type = MyPrivateThing;
public:
Type foo = {32.45L};
// MyPrivateThingFoo also works
};
int main() {
// Object::Type f = {34.567L}; ERROR: Object::Type is private
decltype(Object::foo) thingy = {945.67L}; // Fine
auto x = Object().foo;
return x.Member * thingy.Member;
}
虽然这段代码是合法的 C++ 并且编译良好,但它似乎有点违反直觉——是私有的,不能在类外访问,但我们仍然可以通过使用来间接引用它来获取该类型的变量。Object::Type
auto
似乎更直接的做法是让每个公共成员都有一个公共类型。
你能想到这种模式的任何有效用例吗?
答: 暂无答案
下一个:为什么子类继承私有字段?
评论
long double
private: using abc = Annoyingly::Bloviated::Concept; public: abc GetConcept();
Annoyingly::Bloviated::Concept
abc