gpt4 book ai didi

c++ - 如何在类中重新分配指针数组?

转载 作者:行者123 更新时间:2023-11-28 00:32:16 24 4
gpt4 key购买 nike

我有 Citizen 类 { string name,address ... } 然后我有 TaxRegister 类。

class TaxRegister
{
public:
bool Add_citizen ( const string& name, const string& addr );
private:
static const int m_Size=1000;
int m_Index,m_IncrementedSize;
Citizen * m_People[m_Size];
};

bool TaxRegister::Add_citizen( const string& name, const string& addr )
{
....
m_People[m_Index++] = new Citizen( name,addr );
}

问题是,当我必须向数组中添加超过 1000 人时;

我试着这样做:

Citizen *tmp[m_IncrementedSize*=2];
for (int i=0; i < m_Index; i++ )
tmp[i]=m_People[i];
delete [] m_People;
m_People=tmp;
m_IncrementedSize*=2;

但是编译器给了我这个:

将“CCitizen* [(((sizetype)) + 1)]”赋值给“CCitizen* [1000]”时类型不兼容

有人知道怎么解决吗?谢谢。

最佳答案

使用 std::vector<Citizen>而不是数组,问题可能会自行消失。标准容器,如 std::vector自动为您管理所有内存。你最终会得到 no newdelete[]在您的代码中完全

只是给你一个想法,这就是你的 Add_citizen函数看起来像:

void TaxRegister::Add_citizen( const string& name, const string& addr )
{
m_People.push_back(Citizen(name, addr));
}

您已经在使用 std::string而不是 char const * .那挺好的。使用 std::vector而不是数组是完全相同的改进。

关于c++ - 如何在类中重新分配指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439877/

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