2009-08-19 6 views
4

私はCライブラリへのDブリッジを行っています。これは、定数のようなtypedef'd列挙型を使ってCコードが出てきましたが、関数の引数などのために名前を付けることができます。例:現在名前付き列挙型をDの匿名であるかのように参照できますか?

enum someLongNameThatTheCLibraryUses 
{ 
    A, 
    B, 
} 

、私はそうのようにそれを参照する必要があります。

someLongNameThatTheCLibraryUses.A; 

しかし、私はむしろ、希望:

alias someLongNameThatTheCLibraryUses a; 
a.A; 

A; 

私はこれを行うことができますしかし、私はライブラリモジュールでそれをしたくないので、私はdそれはそれが使用されている場所、それは迷惑になるでしょう。

これを行う方法はありますか?

答えて

5

匿名の列挙型で安全性を確認する場合は、typedefを使用して新しい特殊型を作成し、それを匿名列挙型の基本型として使用できます。例:

typedef int A; 
enum : A 
{ 
    a1, 
    a2, 
    a3 
} 

typedef int X; 
enum : X 
{ 
    x1, 
    x2, 
    x3 
} 

void main() 
{ 
    A a; 
    X x; 
    x = a; // Error: cannot implicitly convert expression (a) of type A to X 
} 
+4

40分;私はこの場所が大好きです。 – Bernard

+2

そして、あなたを拡張してください。 :p – Bernard

関連する問題