【问题标题】:C++ - Looping main resetting objectsC++ - 循环主要重置对象
【发布时间】:2015-01-24 01:31:07
【问题描述】:

我在创建基本文本用户界面时遇到问题。为了保持文本界面循环,我调用 main() 直到用户选择按 0 退出。

但是,这会重新创建我的 LinkedList 列表,我希望将其永久保存。我知道将它作为全局变量是不好的做法,那么我该如何解决这个问题呢?

int main() {

    int choice, newLatitude, newLongitude;
    string newName;

    LinkedList list;

    cout << "[1] Add a city \n";
    cout << "[2] Display list of cities \n";
    cout << "[0] Exit program \n";
    cin >> choice;
    if (choice == 0) {
        return 0;
    }
    else if (choice == 1) {
        cout << "Enter city name: ";
        cin >> newName;
        cout << "Enter latitude: ";
        cin >> newLatitude;
        cout << "Enter longitude: ";
        cin >> newLongitude;
        City newCity(newName, newLatitude, newLongitude);
        list.addNode(newCity);
    } 
    else if (choice == 2) {
        list.display();
    }
    else {
        cout << "Invalid option, please try again \n";
    }

        main();

    return 0;
}

【问题讨论】:

  • 你不应该从 main() 调用 main()。如果您有要重新运行的代码,则应将其放入 main 内的循环中,或者将其设为一个单独的函数,您可以一直调用它,直到您的调用代码对结果满意为止。
  • 永远不要调用 main()。 stackoverflow.com/a/2128727/487892
  • 你不知道循环吗?

标签: c++ object main


【解决方案1】:

使用递归来完成这项任务可能不是一个好主意。如果你想让它重复你可能最好使用一个while循环。 http://msdn.microsoft.com/en-us/library/2aeyhxcd.aspx

只要语句 (true) 为真,While(true) 就会循环。阿卡永远。您也可以执行 while(choice != 0) 之类的操作,但这需要对您的代码进行轻微修改。

int main() {

    int choice, newLatitude, newLongitude;
    string newName;

    LinkedList list;

    while(true)
    {
        cout << "[1] Add a city \n";
        cout << "[2] Display list of cities \n";
        cout << "[0] Exit program \n";
        cin >> choice;
        if (choice == 0) {
            return 0;
        }
        else if (choice == 1) {
            cout << "Enter city name: ";
            cin >> newName;
            cout << "Enter latitude: ";
            cin >> newLatitude;
            cout << "Enter longitude: ";
            cin >> newLongitude;
            City newCity(newName, newLatitude, newLongitude);
            list.addNode(newCity);
        } 
        else if (choice == 2) {
            list.display();
        }
        else {
            cout << "Invalid option, please try again \n";
        }
    }
    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2015-07-20
    相关资源
    最近更新 更多