可能重复: Python中的对象名之前的单下划线和双下划线的含义 我应该在Python中为私有成员和方法使用_foo(下划线)还是__bar(双下划线)?
我发现了一种通过class.getDeclaredFields();获得inheritance成员的方法class.getDeclaredFields(); 并访问私人成员通过class.getFields()但我在寻找私人inheritance领域。 我怎么能做到这一点?
我有一个class级,应该有一个class级的私人成员,像这样: class A { private: A member; } 但它告诉我,成员是一个不完整的types。 为什么? 它不告诉我不完整的types,如果我使用一个指针,但我宁愿不使用指针。 任何帮助表示赞赏
放弃 是的,我完全知道我所问的是完全愚蠢的,任何想要在生产代码中尝试这样的东西的人都应该被解雇和/或开枪。 我主要看看是否可以做到。 现在,这是没有办法,有没有办法从课堂以外的C ++访问私人类成员? 例如,有没有办法做到这一点与指针偏移量? (天真和否则生产准备技术欢迎) 更新 正如在评论中指出的那样,我问这个问题是因为我想写一个关于封装(以及它如何影响TDD)的博客文章。 我想看看是否有办法说“使用私有variables不是100%可靠的方法来强制封装,即使在C ++中”。 最后,我决定把更多的精力放在如何解决问题上,而不是为什么这是一个问题,所以我没有像我计划的那样突出显示一些东西,但是我仍然留下了一个链接。 无论如何,如果有人对它是如何感兴趣的话,这里是: testing驱动开发的敌人第一部分:封装 (我build议在你决定疯了之前阅读它)。
我有点惊讶,下面的代码编译和运行(vc2012&gcc4.7.2) class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } }; int main() { Foo f; // Foo::Bar b = f.Baz(); // error auto b = f.Baz(); // ok std::cout << bi; } 这段代码编译正确吗? 为什么它是正确的? 为什么我可以使用autotypes,而我不能使用它的名称(如预期的)?