2016-05-06 38 views
2

我有一個循環遍歷使用'const'引用的圖形,但是當我分配我的迭代變量時,我意識到它是非常量,然後我得到很好的編譯器的抱怨。如何循環遍歷D中的常量引用的圖形?

class ClassDescriptor 
{ 
    const string name; 
    const TypeInfo type; 
    const ClassDescriptor base; 
    const IPropertyDescriptor[string] propertiesByName; 

    IPropertyDescriptor getFlattenProperty(string name) 
    { 
     // This declaration makes 'const(ClassDescriptor) bag' 
     // Note that in this point I can't add ref keyword. 
     auto bag = this; 
     while(!(bag is null)) 
     { 
      if(name in bag.propertiesByName) 
      { 
       return bag.propertiesByName[name]; 
      } 

      // This assigment breaks the constness 
      bag = bag.base; 
     } 

     return null; 
    } 

    public this(string name, TypeInfo type, ClassDescriptor base, const IPropertyDescriptor[string] propertiesByName) 
    { 
     this.name = name; 
     this.type = type; 
     this.base = base; 
     this.propertiesByName = propertiesByName; 
    } 
} 
+0

專業提示:你可以寫'while(bag!is null)'。與'in'相同。 – sigod

+0

謝謝! :)我不知道 –

+0

我不是D程序員,但爲什麼你不能使用指針? – Elazar

回答