Can't call opIndex on class property
    John C 
    johnch_atms at hotmail.com
       
    Sun Apr  2 16:31:33 PDT 2006
    
    
  
class NameValue {
    char[][char[]] inner;
    char[] opIndex(char[] name) {
        return inner[name];
    }
    void opIndexAssign(char[] value, char[] name) {
        inner[name] = value;
    }
}
class Client {
    NameValue pairs_;
    this() {
        pairs_ = new NameValue;
    }
    NameValue pairs() {
        return pairs_;
    }
}
void main() {
    Client client = new Client;
    client.pairs["One"] = "Two"; // error here
}
Produces "((client).pairs)()["One"] is not an lvalue".
(Windows XP SP2, DMD 0.150)
Changing the offending line to
    client.pairs()["One"] = "Two"
removes the error, as does this
    client.pairs_["One"] = "Two"
but I'd like to keep it as a property. 
    
    
More information about the Digitalmars-d-bugs
mailing list