在编译时无法读取Struct Enum

时间:2014-03-06 21:23:25

标签: struct enums d dmd

我有一个struct enum,我使用它的值来定义数组大小;然而,编译器抱怨结构的值在编译时是未知的。

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次)。这是为什么?

1 个答案:

答案 0 :(得分: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;