C++ C++;未声明的标识符-错误C2065

C++ C++;未声明的标识符-错误C2065,c++,C++,这很可能是一个简单的错误,但我只需要知道如何定义coloras以及如何在这个程序中执行它。(我已经创建了一个color.h文件,并将其放入源文件文件夹中,但还没有写入任何内容。) 该错误说明错误C2065:“颜色”:未声明的标识符 以下是发生错误的代码部分: enum class traffic_light { green, yellow, red }; traffic_light light = traffic_light::red; traffic_light& operator

这很可能是一个简单的错误,但我只需要知道如何定义
color
as以及如何在这个程序中执行它。(我已经创建了一个
color.h
文件,并将其放入源文件文件夹中,但还没有写入任何内容。)

该错误说明
错误C2065:“颜色”:未声明的标识符

以下是发生错误的代码部分:

enum class traffic_light { green, yellow, red };
traffic_light light = traffic_light::red;


traffic_light& operator++(traffic_light &colour);

    switch (colour) {
    case traffic_light::green:{
                                  cout << "green\n";
                                  return colour = traffic_light::yellow;
    }
    case traffic_light::yellow: {
                                    cout << "yellow\n";
                                    return colour = traffic_light::red;
    }
    case traffic_light::red:{
                                cout << "red\n";
                                return colour = traffic_light::green;
    }
}

traffic_light next = ++light;
    cout << " << next << \n";
}
enum类交通灯{绿、黄、红};
交通灯=交通灯::红色;
交通灯和操作员++(交通灯和颜色);
开关(彩色){
案例交通灯::绿色:{

cout您正在关闭您的方法; 如果你让缩进帮助你,编程就容易多了

traffic_light& operator++(traffic_light &colour)//;<-- THIS was the real culprit
{ //<-- and now the switch is a part of the operator function body
    switch (colour) {
        case traffic_light::green: {
            cout << "green\n";
            return colour = traffic_light::yellow;
        }
        case traffic_light::yellow: {
            cout << "yellow\n";
            return colour = traffic_light::red;
        }
        case traffic_light::red: {
            cout << "red\n";
            return colour = traffic_light::green;
        }
    }
    // also, what do you intend with the following?
    /*traffic_light next = ++light;
    cout << " << next << \n";*/
    // if we got here there's an error, maybe a new light type?
    // return red to be safe
    return colour = traffic_light::red;
}

交通灯和操作员++(交通灯和颜色)//;你不需要打断;在你的switch语句中的每一个case之后?@jbutler483:
return
做得很好…第13行是什么?哦,是的,我的错!:P@barakmanos你在方法签名后有一个分号,可能不是一个大括号。应该是:
交通灯和操作员++(交通灯和颜色){
,括号最好在下面一行(但这当然是主观的;)。@EattomuchBread恐怕你没有领会他的意思。你的switch语句“悬空”,应该在方法中。