gpt4 book ai didi

C++如何格式化指向类数组的指针?

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:53 25 4
gpt4 key购买 nike

我想从文件中读取信息并将该信息放入指向类数组的指针中。它不断向 us->setUserName(name) 抛出异常;但是如果我把它改成 us[i]->setUserName(name);它说“表达式必须有指针类型”。我该如何解决这个问题?

    const int SIZE = 100;
User *us = new User[SIZE];

input.open("Account.txt", ios::in);

if (input)
{
input >> size;

for (int i = 0; i < size; i++)
{
us = new User[i];
getline(input, uName);
us->setUserName(uName);

getline(input, password);
us->setPassword(password);

getline(input, name);
us->setName(name);
}
else
cout << "Error opening file" << endl;

这是用户类:

    class User
{
public:
User();
~User();

void setName(string);
string getName();

void setUserName(string);
string getUserName();

void setPassword(string);
string getPassword();

void setFollower(vector<User*>*);
vector<User*>* getFollower();

void setFollowing(vector<User*>*);
vector<User*>* getFollowing();

protected:
string name;
string userName;
string password;

vector <User*>* followers;
vector <User*>* following;

};

最佳答案

      us = new User[i];

在这里,您丢弃此时创建的所有数组并分配一个新数组,从而最终得到 N(O²) 泄漏空间。

首先,删除这一行。接下来,您可以在后续的属性设置中使用 us[i],但由于它将是对数组元素的引用,而不是指针,因此您需要通过 调用其方法。 ,而不是 ->

顺便说一句,在您提供的列表中缺少一个大括号,即 else 之前的那个。

作为旁注,您在类里面使用了太多普通指针。您确实设法妥善处理和清理了它们,不是吗?

另一方面,将用户名+密码存储为纯文本通常不是一个好主意(这里的密码是哈希值吗?)。 :)

关于C++如何格式化指向类数组的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47299342/

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