如何在D中声明私有类成员?

如何在D中声明私有类成员?,d,private-members,compiled-language,D,Private Members,Compiled Language,此程序将回显“C”。我怎么能不允许呢 import std.stdio; void main() { class A { private void B() { writeln("C"); } } auto D = new A; D.B(); } 在D中,private是模块专用的,而不是类专用的。因此,如果希望一段代码不能访问类的成员,则该类必须位于不同的模块中 唯一的例外情况是,由于类位于不同的作用域中,

此程序将回显“C”。我怎么能不允许呢

import std.stdio;
void main() {
    class A {
        private void B() {
            writeln("C");
        }
    }
    auto D = new A;
    D.B();
}

在D中,
private
是模块专用的,而不是类专用的。因此,如果希望一段代码不能访问类的成员,则该类必须位于不同的模块中

唯一的例外情况是,由于类位于不同的作用域中,因此代码根本无法访问该类(例如,如果模块中有另一个函数,则它无法访问
a
,因为它位于
main
内)。但只要一段代码可以访问同一模块内的类,那么它就可以访问其所有成员