在一個對象中,我有一個const-句柄數組給另一個特定類的一些對象。在一種方法中,我可能想要返回這個句柄之一作爲inout
-參數。這裏作爲一個簡化的例子:inout參數 - 用另一個替換一個常量句柄
class A {}
class B {
const(A) a[];
this() {
a = [new A(), new A(), new A()];
}
void assign_const(const(A)* value) const {
// *value = a[0]; // fails with: Error: cannot modify const expression *value
}
}
void main() {
const(A) a;
B b = new B();
b.assign_const(&a);
assert(a == b.a[0]); // fails .. obviously
}
我不想刪除原始數組中的常量。類B
是指收集常數A
-items的某種視圖。我是來自C++的新手。 D-way中的const正確性是否已經搞亂了?我已經嘗試了幾種方法來使這個工作,但沒有線索如何得到它的權利。
在沒有「邪惡」鑄造的情況下執行此查找的正確方法如何?
拋棄const是我最後的選擇,即使它是定義的行爲。在此之前,我已經完全刪除了常量。但是,在我找到一個可接受的解決方案之前,它已經過時了,可以使用Rebindable(..或者至少幾天)。謝謝! – 2013-02-13 19:05:26
如果你閱讀一篇提及它的文章或對這樣的問題的回答,那麼你可能只會瞭解這類事情。但是由於D的類型系統的工作原理,你幾乎不得不像''Rebindable''那樣做一個'const'類,但是它的引用不是'const' - 類型系統根本沒有任何差別的概念兩者之間。 'Rebindable'很好地解決了這個問題,但是由於大多數人都很難理解爲什麼他們不能用語言本身來做,所以大多數人都會想到這種事情。 – 2013-02-13 23:45:14