如何在类中重新分配指针数组
How to reallocate array of pointers in class?
我有一个类Citizen{字符串名称,地址…}然后我有一个类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)] '赋值的不兼容类型
有人知道怎么修理它吗?谢谢你。
使用std::vector<Citizen>
代替数组,问题可能会自行消失。像std::vector
这样的标准容器会自动为您管理所有内存。你最终会得到没有new
和delete[]
在你的代码。
为了给你一个概念,这就是你的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
代替数组是完全相同的改进。
如果您想坚持使用数组,只需确保数组声明中的size参数实际上是一个常量,而不是一个变量。然后分配一个新的数组
相关文章:
- 通过双指针分配指针
- 在不工作的情况下为数组分配指针,但反过来也可以
- 无法使用"std::make_shared"分配指针
- 分配指针时出现分段错误
- 为什么有时仅使用Ampersand运算符在C 中分配指针
- 重新分配指针阵列的一部分的安全方法
- 为什么在执行增量操作之前分配指针值
- 当指针指向的对象被另一个类的实例删除时,重新分配指针
- 在堆上分配指针的原因是什么?
- 有没有办法防止分配指针?
- 将运算符重写应用于具有动态分配指针的类
- 在堆上分配指针数组
- 在另一个结构中的结构内解除分配指针
- 分配指针后,是否可以为指针指向的事物分配变量名称?
- 重新分配指针后,将类功能与指针一起使用
- 为什么我的新分配指针会自动在程序退出上删除
- 分配指针的方法之间有什么区别?
- 如何声明和分配指针
- 内存分配(指针和堆栈)
- 通过参数分配指针的值