C++ main()中枚举的typedef结构不工作

C++ main()中枚举的typedef结构不工作,c++,struct,enums,typedef,C++,Struct,Enums,Typedef,现在差不多是凌晨4点了,我真的放弃了,有人帮帮我 #include <iostream> using namespace std; int d; typedef struct my_data { enum calling_func { TEST_A, TEST_B, TEST_C } val; }letter_data; int main() { letter_data l; l.va

现在差不多是凌晨4点了,我真的放弃了,有人帮帮我

#include <iostream>
using namespace std;

int d;

typedef struct my_data
{

    enum calling_func
    {
        TEST_A,
        TEST_B,
        TEST_C
    } val;

}letter_data;


int main() {
    letter_data l;
    l.val = TEST_A; // error: 'TEST_A' was not declared in this scope

    cout << "test" << endl;

    return 0;
}
#包括
使用名称空间std;
int d;
typedef结构我的_数据
{
枚举调用函数
{
测试A,
测试B,
测试
}瓦尔;
}字母u数据;
int main(){
字母_数据l;
l、 val=TEST\u A;//错误:“TEST\u A”未在此范围内声明

coutClang产生一条可读性很强的错误消息:

[8:10pm][wlynch@watermelon /tmp] clang++ red.cc 
red.cc:21:13: error: use of undeclared identifier 'TEST_A'; did you mean 'my_data::TEST_A'?
    l.val = TEST_A; // error: 'TEST_A' was not declared in this scope
            ^~~~~~
            my_data::TEST_A
red.cc:11:9: note: 'my_data::TEST_A' declared here
        TEST_A,
        ^
1 error generated.

Clang生成一条可读性很强的错误消息:

[8:10pm][wlynch@watermelon /tmp] clang++ red.cc 
red.cc:21:13: error: use of undeclared identifier 'TEST_A'; did you mean 'my_data::TEST_A'?
    l.val = TEST_A; // error: 'TEST_A' was not declared in this scope
            ^~~~~~
            my_data::TEST_A
red.cc:11:9: note: 'my_data::TEST_A' declared here
        TEST_A,
        ^
1 error generated.
试试这个:

int main() {
    letter_data l;
    l.val = my_data::TEST_A; // error: 'TEST_A' was not declared in this scope

    cout << "test" << endl;

    return 0;
}
试试这个:

int main() {
    letter_data l;
    l.val = my_data::TEST_A; // error: 'TEST_A' was not declared in this scope

    cout << "test" << endl;

    return 0;
}

嗯,你用的是什么ide?使用代码块,它并没有真正提到我的数据::测试A:(还有zuper,谢谢,太快了…早上好…嗯,你用的是什么ide?使用代码块,它并没有真正提到我的数据::测试A:(也谢谢zuper,这很快…我的早上…结构定义创建了一个新的范围。
struct
定义创建了一个新的范围。我是一个初学者…尝试删除它,但出现了错误…你可能有一个例子吗?谢谢!非常感谢,现在明白了:)请参阅结构声明。注意,我将
字母\u数据
标识符从结构的末尾移动,以替换
my\u数据
的标记名。我还更改了
main()中
TEST\u A
的限定符
函数。记住,如果这个答案有用,请单击复选标记。我是一个初学者…尝试删除该选项后出现错误…您是否有一个示例?谢谢!非常感谢,现在就知道了:)请参阅结构声明。请注意,我将
字母\u数据
标识符从结构的末尾移动,以替换
my\u数据
的标记名。我还更改了
main()
函数中
TEST\u A
的限定符。请记住,如果此答案有用,请单击复选标记。