[Bug 191] New: Cannot refer to member variable in default value for	method parameter
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Sun Jun 11 05:06:33 PDT 2006
    
    
  
http://d.puremagic.com/bugzilla/show_bug.cgi?id=191
           Summary: Cannot refer to member variable in default value for
                    method parameter
           Product: D
           Version: 0.160
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: deewiant at gmail.com
--
class c {
        int x = 5;
        int foo(int a = x) { return a; }
}
void main() {
        assert ((new c).foo() == 5);
}
--
The above code does not compile, producing the error "need 'this' to access
member x".
Obliging by changing "int a = x" to "int a = this.x" changes the error to
"'this' is only allowed in non-static member functions" followed by "this for x
needs to be type c not type int".
It can be worked around by removing the default value and manually overriding
foo with "int foo() { return foo(x); }", but this is a needless annoyance and
precisely what default values are there for.
It might be worth noting that this is a longstanding bug which bit me for the
first time with DMD 0.128:
http://www.digitalmars.com/d/archives/digitalmars/D/bugs/4532.html
-- 
    
    
More information about the Digitalmars-d-bugs
mailing list