微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何将枚举更改为字符?我正在尝试投射它,但它给了我一个错误

如何解决我如何将枚举更改为字符?我正在尝试投射它,但它给了我一个错误

所以我应该制定一个旅行计划来帮助旅行者了解他们的位置(北、南、东、西)。我们应该为菜单选项创建枚举数据类型,而不是使用字符选项,用户可以在其中选择他们要去的方向,并告诉他们总距离和离家的距离。 我试图投射枚举,但我收到此错误:预期的主表达式之前;令牌。” 这是我的代码

int main(){
    char option_letter;
    int lat1 = 0;
    int lat2 = 0;
    int long1 = 0;
    int long2 = 0;
    double distance = 0;
    int totaldistance = 0;
    enum direction_t {north = 'n',South = 's',East = 'e',West = 'w',Home = 'h',Quit = 'q'};
    direction_t direction = static_cast<direction_t>(tolower(option_letter));
    
    cout <<"Starting home at 0 north/South and 0 East/West,this program shows your position"<<endl;
    cout<<"after travelling 10 miles: north,south,east or west,how far you are from home"<<endl;
    cout<<"and how far you have traveled in total. You can jump home or quit." <<endl;
    
    distance = sqrt(pow(lat2-lat1,2) + pow(long2-long1,2));
    totaldistance = (lat1 + lat2) + (long1 + long2);
    while (true){
        cout <<"Location:"<< "longitude:" <<  long1<<" N"<< " latitude:" <<  lat1<<" E"<< " ""distance from home:"<< distance<< " ""distance traveled:"<< totaldistance<<endl;
        cout <<"Choose direction to travel(0 to quit) N)orth,S)outh,E)ast,W)est,H)ome,Q)uit:"<<endl;
        cin << direction_t;
        switch(direction_t){
            case 'n':{
                distance = sqrt(pow(lat2-lat1,2) * 1);
                totaldistance = (lat1+ lat2) + (long1 + long2);
                break;
            }
            case 'e':{
                distance = sqrt(pow(lat2-lat1,2) * 1);
                totaldistance = (lat1 + long1) + (long1 + long2);
                break;
            }
                
        }
        
    }
    return 0;
}

解决方法

" ""离家的距离:"

你忘记删除额外的引号

除此之外,cin (>>) 需要右箭头

,

有几个问题:

第一个 cin 应该使用 >> 而不是 <<

那么 direction_t 是一个类型,direction 是一个变量。

最后,您不能直接读入 direction_t 类型的变量,除非您为 cin 重载 >> 运算符。

,

看起来强制转换实际上是正确实现的,但是,您从未初始化 option_letter,因此您没有将任何数据传递给强制转换。根据您的问题,您应该通过 cin 将数据从 option_letter 传递到 cin >> option_letter,然后将其转换为 direction_t 类型。

您收到错误的原因是您在应该使用 direction_t 时使用了 direction(这发生在您程序的多个位置),并且使用了 {{ 1}} 运算符与 << 一起使用时应该使用 cin 运算符。

你的代码应该是这样的 --

>>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。