gpt4 book ai didi

c++ - 初始化对象的指针数组

转载 作者:太空狗 更新时间:2023-10-29 20:29:45 24 4
gpt4 key购买 nike

所以我有以下代码

class UserDB
{
private:
AccountInfo* _accounts[200] ; // store up to 200 accounts
public:
UserDB();
virtual ~UserDB();
}
UserDB::UserDB(){
//code for initializing it to null
}
UserDB::~UserDB(){
delete [] _accounts;
}

所以基本上我试图找到这段代码来将 _accounts 初始化为 null 但我找不到真正的答案,互联网上的所有指南都说如何初始化数组、对象或一个指针,但不是三者全有的东西,更不用说如何将这种指针初始化为null,甚至他们[在指南中]初始化的东西看起来都很困惑,所以我再次来这里寻求帮助。此外,AccountInfo 只是任何随机类。

最佳答案

使用 std::arraystd::vector

您不需要delete[] _accounts 因为该数组是一个 -- 它是一个指针数组。 IOW,它的大小不等于指针。

这是一个 std::vector 方法:

class UserDB {
private:
std::vector<AccountInfo*> _accounts;
public:
UserDB() : _accounts(200, 0) {}
virtual ~UserDB() {}
};

但是,您可能更喜欢使用 vector 的默认初始化程序,这样您就可以使用它来确定它拥有的帐户数量。

更新以回应以下评论:

尽管有理由保存一个 AccountInfo* 指针数组,您也可以考虑 std::vector 保存一个 AccountInfo 数组>s 值(value)观:

class UserDB {
private:
std::vector<AccountInfo> _accounts;
public:
UserDB() : _accounts() {}
virtual ~UserDB() {}
void appendAccountInfo(const AccountInfo& info) {
this->_accounts.push_back(info);
}
};

std::vector 将为您处理所有分配和重新分配需求。这也很好,因为它可以动态调整大小,并且您不会受限于固定数量的 AccountInfos

关于c++ - 初始化对象的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107985/

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