我调整了大小的对象的动态数组。调整大小后,我可以调用int和double对象的set方法,但不使用字符串调用任何setter方法对象。每当我试图调用setter方法调整大小后的数组我得到一个核心转储的新指标。获取“分段错误:尝试将字符串写入设置器时发生核心转储
这的是产生错误代码的主要部分。
void resizeAccounts(int newSize, Account *accounts, int acctNum, std::string fName, :string lName, std::string acctP, double balance)
{
Account* newArr = new Account[newSize];
for (int i=0; i<newSize-1; i++)
newArr[i]=accounts[i];
delete [] accounts;
accounts = newArr;
accounts[newSize].setAccountNum(acctNum);
accounts[newSize].setFirstName(fName);
accounts[newSize].setLastName(lName);
accounts[newSize].setAccountPassword(acctP);
accounts[newSize].setBalance(balance);
for(int i=0; i<newSize; i++)
std::cout << accounts[i].getAccountNum() << std::endl;
的制定者我正在使用
void Account::setFirstName(std::string fName)
{ firstName = fName; }
void Account::setLastName(std::string lName)
{ lastName = lName; }
void Account::setAccountPassword(std::string acctPass)
{ accountPassword = acctPass; }
void Account::setAccountNum(int acctNum)
{ accountNum = acctNum; }
void Account::setBalance(double bal)
{ balance = bal; }`
这是作业,我不允许使用矢量或大多数STL库。 谢谢,
您可以使用'std :: vector'并删除所有手动内存管理吗? –
juanchopanza
2013-02-28 22:16:34
有些不相关的注释,但是你真的希望通过const引用而不是按值传递字符串到setter中。这是很好的做法,并避免不必要的额外副本。 – 2013-02-28 22:19:18
'resizeAccounts'的语义应该是什么呢?你为什么要在新的“账户”上设置一些东西?例如,如果'newSize == oldSize',大概你根本不想改变任何东西,是吗? – 2013-02-28 23:04:16