C ++枚举定义未被接受

时间:2016-03-30 04:18:57

标签: c++ enums

我想在我的程序中使用一些nss3.dll代码。为此,我决定声明它需要的所有复合数据类型,并用它们调用dll文件中的函数。

我在firefox源代码中使用了一个文件,看看如何正确使用我需要的功能。在其中一个函数中,它声明了这些复合数据类型之一(secuPWData)并传递变量。这是我粘贴到我的代码中的定义没有任何错误:

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值时,它告诉我' 类型" int"的值不能用于初始化类型" enum secuPWData ::" '的实体。为了尝试调试这个问题,我尝试在声明的基础上粘贴定义,没有任何改变。

导致此问题的原因是什么?

感谢您的帮助。

1 个答案:

答案 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