鱼C论坛

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

C++出现死循环

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

  3. class my_waste
  4. {
  5. public:
  6.     virtual void get() = 0;
  7.     virtual void run() = 0;
  8. };

  9. class one:public my_waste
  10. {
  11. public:
  12.     virtual void get() { cout << "我获得了1" << endl; }
  13.     virtual void run() { cout << "我是1!!!" << endl; }
  14. };

  15. class two :public my_waste
  16. {
  17. public:
  18.     virtual void get() { cout << "我获得了2" << endl; }
  19.     virtual void run() { cout << "我是2!!!" << endl; }
  20. };

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

  23. int main()
  24. {
  25.     void (my_waste::*pl) ()= 0;
  26.     my_waste *p1;
  27.     int check1, check2;
  28.     bool bbq = false;
  29.     while (1)
  30.     {
  31.     l:cout << "0退出 1one的 2two的" << endl;
  32.         cin >> check1;
  33.         switch (check1)
  34.         {
  35.         case 1:p1 = new one;break;
  36.         case 2:p1 = new two;break;
  37.         case 0:bbq = true;break;
  38.         default:cout << "非法操作" << endl;goto l;break;//死循环
  39.         }
  40.         if (bbq)
  41.             break;
  42.         j:cout << "操作的函数 1或者2" << endl;
  43.         cin >> check2;
  44.         switch (check2)
  45.         {
  46.         case 1:pl = &my_waste::get;break;
  47.         case 2:pl = &my_waste::run;break;
  48.         default:cout << "非法操作" << endl;goto j;break;//死循环
  49.         }
  50.         (p1->*pl)();
  51.         delete p1;
  52.     }
  53.     return 0;
  54. }
复制代码

输入字符就会出现 输入数字不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-28 02:49:59 | 显示全部楼层
  1. int main()
  2. {
  3.         void (my_waste::*pl) ()= 0;
  4.         my_waste *p1;
  5.         int check1, check2;
  6.         bool bbq = false;
  7.         while (1)
  8.         {
  9. l:cout << "0退出 1one的 2two的" << endl;
  10.                 if(!(cin >> check1))      //输入错误的话需要清理cin流中的内容。
  11.                 {
  12.                         cin.clear();
  13.                         cin.sync();
  14.                         check1 = -1;
  15.                 }
  16.                 switch (check1)
  17.                 {
  18.                 case 1:p1 = new one;break;
  19.                 case 2:p1 = new two;break;
  20.                 case 0:bbq = true;break;
  21.                 default:cout << "非法操作, 请重新输入" << endl;goto l;break;//死循环
  22.                 }
  23.                 if (bbq)
  24.                         break;
  25. j:cout << "操作的函数 1或者2" << endl;
  26.                 cin >> check2;
  27.                 switch (check2)
  28.                 {
  29.                 case 1:pl = &my_waste::get;break;
  30.                 case 2:pl = &my_waste::run;break;
  31.                 default:cout << "非法操作" << endl;goto j;break;//死循环
  32.                 }
  33.                 (p1->*pl)();
  34.                 delete p1;
  35.         }

  36.         return 0;
  37. }
复制代码

评分

参与人数 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-4-25 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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