cast(public)
Nick Sabalausky
a at a.a
Fri Jul 17 12:20:13 PDT 2009
"dsimcha" <dsimcha at yahoo.com> wrote in message
news:h3q5td$2jqa$1 at digitalmars.com...
>I know I've probably mentioned this one here before, but it was buried in
>long
> threads.
>
> Could we put a feature in the language that allows private member
> variables to
> be cast to public? The idea is that, if a class/struct designer makes
> something private, they're saying it's a bad idea to mess with it, and
> that
> you do so at your own risk. However, I think there needs to be a back
> door to
> cowboy this one, because otherwise private/protected is just too
> restrictive
> for a language like D. It would work something like this:
>
> struct Foo {
> private uint bar;
> }
>
> void main() {
> Foo foo;
> foo.bar++; // error
> (cast(public) foo.bar)++; // Works.
> }
I don't see a real legitimate point to this. If you need something from a
module not provided by a public interface (or protected sub-classing) than
that needs to be properly added to the module's interface. Otherwise you're
just asking for your code to be broken (in a way that may *or* may not be
fixable) the moment the module you're hacking into is updated. Why hack it,
when you could just make a proper added feature? Sure, there may be
source-not-available stuff, but if you need some extra feature from a
library that doesn't have source available, and the lib's developers aren't
receptive to your need, then you're just simply using the wrong library
anyway.
More information about the Digitalmars-d
mailing list