打印链表仅打印最后一个节点


如果您

能帮助我理解为什么会发生下一个问题,我会很高兴:当我打印我在列表中制作的所有零件时,它只打印了最后一个元素。如果您能告诉我为什么会发生这种情况以及如何解决它,我将很高兴。

我的构造函数 -

BankAccount::BankAccount(std::string name)
: _name(std::move(name))
, _balance()
{ }
LimitedBankAccount::LimitedBankAccount(double limit, std::string name)
: BankAccount(std::move(name))
, _limit(limit)
,a(NULL)
{ }
// call to my Constructors
void LimitedBankAccount::NewLimitedBankAccount(double limit, std::string name)
{
this->a = new LimitedBankAccount(limit,name);
}

我的有限帐户 .h -

#ifndef LIMITEDBANKACCOUNT_H
#define LIMITEDBANKACCOUNT_H
#include <iostream>
#include <string>
#include "BankAccount.h"
class LimitedBankAccount : public BankAccount{
public:
LimitedBankAccount(double limit, std::string _name);
void setLimit(double num);
double getLimit();
void NewLimitedBankAccount(double limit, std::string name);
void print();
private:
double _limit;
LimitedBankAccount* a;
 };
#endif

打印功能 -

void LimitedBankAccount::print()
{
if(a != NULL)
{
    this->a->print();
}
std::cout << this->_limit << std::endl;
} 

感谢所有帮手!!

你忘了链接你的对象;每次你调用NewLimitedBankAccount()时,你都会覆盖this->a,失去与前一个对象的链接(所以你也会泄漏内存)。您应该将指针复制到新对象:

void LimitedBankAccount::NewLimitedBankAccount(double limit, std::string name)
{
   NewLimitedBankAccount *na = new LimitedBankAccount(limit,name);
   na->a = this->a;
   this->a = na;
}

这真的是链接列表 101.... 是的,当 this->a 最初为 NULL 时,上述内容将适用于第一个分配的对象。

相关内容

  • 没有找到相关文章

最新更新