可以将这段代码写为类`User`的一个公共的菜单函数,如下所示:
```c++
class User {
private:
string username;
string password;
double balance;
bool loggedIn;
public:
User(string username, string password, double balance) {
this->username = username;
this->password = password;
this->balance = balance;
this->loggedIn = false;
}
// 省略其他成员函数
void menu() {
while (true) {
// 显示菜单
cout << "1. Register" << endl;
cout << "2. Login" << endl;
cout << "3. Logout" << endl;
cout << "4. Exit" << endl;
// 获取用户选择
int choice;
cin >> choice;
switch (choice) {
case 1:
registerUser();
break;
case 2:
if (!loggedIn) {
loginUser(*this);
} else {
cout << "You are already logged in." << endl;
}
break;
case 3:
if (loggedIn) {
logout();
cout << "Logout successful!" << endl;
} else {
cout << "You are not logged in." << endl;
}
break;
case 4:
return;
default:
cout << "Invalid choice." << endl;
break;
}
}
}
};
```
在这个版本中,我们将菜单循环封装到了`User`类的`menu()`函数中。在菜单循环中,我们使用了当前对象的成员变量和成员函数,而不是传递参数。这样,我们就可以通过创建`User`对象并调用其`menu()`函数来启动菜单循环了。