On 22/06/11 2:19 PM, Nick Sabalausky wrote:
In your example, the user needs to be able to use the Foo symbol in order to
get full use out of Foos. However, in my example, the user does *not* need
to use the Foo symbol in order to get full use out of Bar. They can just use
Bar in place of Foo. The "Foo" symbol is a necessary part of Foos's
interface, but it is *not* a necessary part Bar's interface.
They don't *need* the Foo symbol:
// module A
private class Foo;
public alias Foo[] Foos;
Foos getFoos();
// module B
import A;
void main()
{
Foos foos = getFoos();
foos[0].someFunc();
auto f = foos[0];
}
Here, module B hasn't used the Foo symbol, but it's as if Foo isn't
private at all. I don't know about you, but this feel really wrong to me.