2014-03-06 31 views
2

我有一個結構枚舉,我用它的值來定義一個數組的大小;但是編譯器會抱怨編譯時struct結構的值是未知的。結構枚舉不能在編譯時讀取

module main; 

struct Point3D { 
     ubyte x; 
     ubyte y; 
     ubyte z; 
} 

void main() { 
     enum Point3D point = {x:1, y:1, z:1}; 
     int testArray[point.x][point.y][point.z]; // ERRORS - X Cannot be read at compile time. 
} 

編譯器告訴我它不能在編譯時讀取x(它甚至會告訴我4次)。爲什麼是這樣?

回答

2

看起來像一個編譯器錯誤...你可以解決它通過保存的值中介枚舉:

enum Point3D!ubyte BlobSize = {x:32, y:32, z:32}; 
enum BlobX = BlobSize.x; 
enum BlobY = BlobSize.y; 
enum BlobZ = BlobSize.z; 
blobcontents[BlobX][BlobY][BlobZ] data; 
+1

提起它作爲一個錯誤:https://d.puremagic.com/issues/show_bug .cgi?id = 12306 –

+0

你的例子似乎確實有效。奇怪它如何不能讀取數組中的結構內容,但它可以在它之外。 –