gpt4 book ai didi

c++ - 从头文件访问数组会使程序崩溃

转载 作者:行者123 更新时间:2023-11-30 05:42:24 25 4
gpt4 key购买 nike

我最近完成了一门关于 C++ 的类(class),为了测试一下我从中学到了什么,我决定开始进行操作系统模拟,在我尝试通过使用一个存储用户名的数组,用户将从中选择一个,然后进入他们的用户名。但是问题在于,当我尝试修改源文件中头文件中的数组时,程序崩溃了。头文件:

#ifndef UBUNTU_LOGIN_H
#define UBUNTU_LOGIN_H
#include "Ubuntu_UserDetails.h"
#include <iostream>
#include <string>
#include <vector>

class Ubuntu_Login: protected UserDetails
{
public:
void Ubuntu_UserCreation();
void Ubuntu_login();
};

#endif // UBUNTU_LOGIN_H
#ifndef UBUNTU_USERDETAILS_H
#define UBUNTU_USERDETAILS_H
#include "Ubuntu_login.h"
#include <string>
#include <vector>
class UserDetails
{
protected:
std::string username;
std::string password;
std::string users[0];
};

#endif // UBUNTU_USERDETAILS_H

源文件:

#include "Ubuntu_login.h"
#include "Ubuntu_UserDetails.h"
#include <iostream>
#include <vector>
#include <string>

void Ubuntu_Login::Ubuntu_UserCreation()
{
std::cout << "\t _____________" << std::endl;
std::cout << "\t|Create a user|\n" << std::endl;

std::cout << "Enter a username:" << std::endl;
std::getline(std::cin, username);

std::cout << "Enter a password:" << std::endl;
std::getline(std::cin, password);

users[0] = username;
std::cout << users[0] << std::endl;

std::cout << "User created successfully" << std::endl;
}


void Ubuntu_Login::Ubuntu_login()
{
std::cout << "\t ______" << std::endl;
std::cout << "\t|Log in|\n" << std::endl;
std::cout << "Select user" << std::endl;
}
#include "Ubuntu_login.h"
#include <iostream>


int main()
{
Ubuntu_Login UO;
UO.Ubuntu_UserCreation();
UO.Ubuntu_login();

}

当我尝试运行它时,我得到了初始密码输入,然后程序崩溃了,我认为这是由于堆栈溢出造成的,但我不知道如何解决它。对于解决此问题的任何帮助以及对整个代码的一般帮助,我们将不胜感激 :)。

另外,我没有包含诸如将密码存储为哈希值或不回显密码之类的内容的原因仅仅是因为我不知道这样做的语法,我想先尝试做我知道该怎么做的事情稍后添加其他功能,所以不要指望伟大的代码 :P

最佳答案

使用 std::vector<std::string> users

然后就是 users.push_back(username)给它。动态数组适用于此。

关于c++ - 从头文件访问数组会使程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30681662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com