鱼C论坛

 找回密码
 立即注册
查看: 2195|回复: 3

C++出现死循环

[复制链接]
发表于 2016-3-28 02:49:58 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 Angel丶L 于 2016-3-28 02:59 编辑
#include <iostream>
using namespace std;

class my_waste
{
public:
    virtual void get() = 0;
    virtual void run() = 0;
};

class one:public my_waste 
{
public:
    virtual void get() { cout << "我获得了1" << endl; }
    virtual void run() { cout << "我是1!!!" << endl; }
};

class two :public my_waste
{
public:
    virtual void get() { cout << "我获得了2" << endl; }
    virtual void run() { cout << "我是2!!!" << endl; }
};

//{ cout << "我获得了1" << endl; }
//{ cout << "我是1" < , endl; }

int main()
{
    void (my_waste::*pl) ()= 0;
    my_waste *p1;
    int check1, check2;
    bool bbq = false;
    while (1)
    {
    l:cout << "0退出 1one的 2two的" << endl;
        cin >> check1;
        switch (check1)
        {
        case 1:p1 = new one;break;
        case 2:p1 = new two;break;
        case 0:bbq = true;break;
        default:cout << "非法操作" << endl;goto l;break;//死循环
        }
        if (bbq)
            break;
        j:cout << "操作的函数 1或者2" << endl;
        cin >> check2;
        switch (check2)
        {
        case 1:pl = &my_waste::get;break;
        case 2:pl = &my_waste::run;break;
        default:cout << "非法操作" << endl;goto j;break;//死循环
        }
        (p1->*pl)();
        delete p1;
    }
    return 0;
}
输入字符就会出现 输入数字不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-28 02:49:59 | 显示全部楼层
int main()
{
        void (my_waste::*pl) ()= 0;
        my_waste *p1;
        int check1, check2;
        bool bbq = false;
        while (1)
        {
l:cout << "0退出 1one的 2two的" << endl;
                if(!(cin >> check1))      //输入错误的话需要清理cin流中的内容。
                {
                        cin.clear();
                        cin.sync();
                        check1 = -1;
                }
                switch (check1)
                {
                case 1:p1 = new one;break;
                case 2:p1 = new two;break;
                case 0:bbq = true;break;
                default:cout << "非法操作, 请重新输入" << endl;goto l;break;//死循环
                }
                if (bbq)
                        break;
j:cout << "操作的函数 1或者2" << endl;
                cin >> check2;
                switch (check2)
                {
                case 1:pl = &my_waste::get;break;
                case 2:pl = &my_waste::run;break;
                default:cout << "非法操作" << endl;goto j;break;//死循环
                }
                (p1->*pl)();
                delete p1;
        }

        return 0;
}

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
Angel丶L + 5 + 5 + 3 嗯 支持下

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-28 03:08:24 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-4 16:54:06 | 显示全部楼层
支持一下,加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 22:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表