Module-level accessibility
Steven Schveighoffer
schveiguy at yahoo.com
Mon Oct 4 05:05:49 PDT 2010
On Sun, 03 Oct 2010 04:50:26 -0400, Sergey <smsmfk at gmail.com> wrote:
>
> Hi, I'm a newcomer to D. Several days ago I've stumbled upon a very
> strange thing about D. As I understand, module members, such as classes,
> structs, functions and variables can be marked with an accessibility
> attribute, such as private, public, package or export. Say, there's a
> module named "test.d":
>
> module test;
>
> private int x1;
> public int x2;
>
> private void fnc1()
> {
> }
> public void fnc2()
> {
> }
>
> private class C1 {}
> public class C2 {}
>
> With a great surprise, I have discovered that from another module it is
> still possible to access both x1 and C1, though fnc1() is inaccessible !
> Can anyone explain me what does it mean ?
> Thanks in advance.
This has been reported several times, it looks to me like it should be
fixed.
As far as module data members, static works in C/C++, try using it here (a
static member has a local name, so it cannot be used outside the file).
I don't think there's any application for static classes, though.
But private seems like a much better term for this type of thing, I think
it should be supported at a module level across the board.
Related bugs:
http://d.puremagic.com/issues/show_bug.cgi?id=1161
http://d.puremagic.com/issues/show_bug.cgi?id=1441
http://d.puremagic.com/issues/show_bug.cgi?id=2225
http://d.puremagic.com/issues/show_bug.cgi?id=2775
http://d.puremagic.com/issues/show_bug.cgi?id=2830
Couldn't find any more, did a search for "private"
Most likely others have encountered the issue and found one of the related
bugs above, then didn't bother to report another one.
-Steve
More information about the Digitalmars-d
mailing list