其他分享
首页 > 其他分享> > 无法在C中定义运算符,这是什么问题?

无法在C中定义运算符,这是什么问题?

作者:互联网

我正在研究Bjarne Stroustrup的C编程语言,并且只限于其中的一个示例.这是代码,除了空白和注释,我的代码与书中的代码相同(第51页).

enum class Traffic_light { green, yellow, red};
int main(int argc, const char * argv[])
{
    Traffic_light light = Traffic_light::red;
//    DEFINING OPERATORS FOR ENUM CLASSES
//    enum classes don't have all the operators, must define them manually.
    Traffic_light& operator++(Traffic_light& t) {
        switch (t) {
            case Traffic_light::green:
                return t = Traffic_light::yellow;
            case Traffic_light::yellow:
                return t = Traffic_light::red;
            case Traffic_light::red:
                return t = Traffic_light::green;
        }
    }

    return 0;
}

但是,当我在Mac OS X 10.9上使用clang -std = c 11 -stdlib = libc -Wantything main.cpp进行编译时,出现以下错误:

main.cpp:24:9: error: expected expression
        switch (t) {
        ^
main.cpp:32:6: error: expected ';' at end of declaration
    }
     ^
     ;

真正的baffeler是期望的表达错误,但是是期望的;也有问题.我做了什么?

解决方法:

Traffic_light&安培;运算符(Traffic_light& t)是一个名称为operator的函数.每个功能应在任何其他功能之外定义.因此,将运算符的定义放在main之前.

标签:c,c11,enums,operator-overloading,switch-statement
来源: https://codeday.me/bug/20191012/1902323.html