2016-03-30 7 views
0

私のプログラムにはnss3.dllコードを使用したいと思います。これを行うために、私は必要な複合データ型をすべて宣言し、それらを使ってdllファイル内の関数を呼び出すことにしました。C++のenum定義が受け入れられていません

Firefoxのソースコードにあるファイルを使用して、必要な機能を正しく使用する方法を確認しています。関数の1つでは、これらの複合データ型(secuPWData)の1つを宣言し、変数に渡します。ここで私はエラーなしに私のコードに貼り付け定義は次のとおりです。

typedef struct { 
    enum { 
     PW_NONE = 0, 
     PW_FROMFILE = 1, 
     PW_PLAINTEXT = 2, 
     PW_EXTERNAL = 3 
    } source; 
    char *data; 
} secuPWData; 

この構造体の宣言は、私が見ているコードに次のようになります。私は(同様のを使用しようとするとsecuPWData pwdata = { PW_NONE, NULL };

または同じ)宣言では、それは未定義であると主張してPW_NONE属性について不平を言う。その場所の0値を渡そうとしたときに、「型の値を「enum secuPWData ::」という型のエンティティを初期化するために使用することはできません。問題のデバッグを試みるために、宣言の上に変更を加えることなく定義を貼り付けることを試みました。

この問題の原因は何ですか?

ありがとうございました。

+2

がsecuPWData :: PW_NONEを試してみてください...私のために働きました。また、Cタグも削除してください。 –

+0

@ n.m。ありがとう、それはそれを修正した。 Cタグはどういう意味ですか? – Yapoz

+0

質問のタグ。 –

答えて

0

@n.mと同じです。 secuPWDataを使用して言及した試み:: PW_NONE

#include <iostream> 
using namespace std; 
typedef struct { 
    enum { 
     PW_NONE = 0, 
     PW_FROMFILE = 1, 
     PW_PLAINTEXT = 2, 
     PW_EXTERNAL = 3 
    } source; 
    char *data; 
} secuPWData; 

int main() { 
    secuPWData pwdata = { secuPWData::PW_NONE, NULL }; 
    return 0; 
} 

ideone - link

関連する問題