【发布时间】:2014-03-16 16:57:58
【问题描述】:
我有 class Citizen { string name,address ... },然后我有 class 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,这正是它的设计初衷。
标签: c++ arrays object pointers realloc