Class declaration
Simen Haugen
simen at norstat.no
Fri Oct 5 03:41:15 PDT 2007
module test;
import std.stdio;
private protected public public private public private protected public
protected public private protected private public public private protected
protected private class T {
this(char[] msg) {
writefln(msg);
}
}
void main() {
T t = new T("This works too :)");
}
"Bill Baxter" <dnewsgroup at billbaxter.com> wrote in message
news:fe4tra$2bgd$1 at digitalmars.com...
> negerns wrote:
>> I have been testing/configuring a UML tool to generate D classes/files
>> when I came across D's class attributes scope and final. I wondered if D
>> classes have other attributes like public, private, protected. So I tried
>> it and tested some D source codes. Here is one that I tried:
>>
>> private protected public class A {
>> public this() { }
>> }
>>
>> void main() {
>> auto a = new A();
>> }
>>
>> This code was successfully compiled using dmd 1.021 without errors or
>> warnings, much to my surprise. Could anyone please tell me why is this
>> so?
>
> You're certainly not the first one to ask. :-)
>
> First off protection attributes don't apply within a module. Everything
> in one file has access to everything else. D doesn't have C++'s "friend"
> so that's sort of D's substitute.
>
> Second, the compiler is overly permissive about mixed attributes. I think
> there are bugs on file for it. But fixing it is low priority since the
> amount of harm it causes is small.
>
> --bb
More information about the Digitalmars-d-learn
mailing list