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

 行玲于諭淑臻 发布于 2023-02-05 23:51

我正在研究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;
}

然而,当我clang++ -std=c++11 -stdlib=libc++ -Weverything main.cpp在Mac OS X 10.9上编译它时,我收到以下错误:

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

真正的baffeler是expected expression错误,但expected ;也是有问题的.我做了什么?

1 个回答
  • Traffic_light和operator ++(Traffic_light&t)是一个名为operator ++的函数.每个功能都应在任何其他功能之外定义.因此,在main之前放置运算符的定义.

    2023-02-06 00:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有