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

C++ 打印链表仅打印最后一个节点,c++,class,linked-list,nodes,C++,Class,Linked List,Nodes,如果您能帮助我理解为什么会出现下一个问题,我会很高兴:当我打印我在列表中制作的所有零件时,它只打印最后一个元素。如果你能告诉我为什么会发生这种情况以及如何解决它,我会很高兴 我的构造器- BankAccount::BankAccount(std::string name) : _name(std::move(name)) , _balance() { } LimitedBankAccount::LimitedBankAccount(double limit, std::string name)

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

我的构造器-

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);
}
我的有限账户-

#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时,您都会覆盖此->a,从而失去与上一个对象的链接,从而导致内存泄漏。应将指针复制到新对象:

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

这是真正的链表101。。。。是的,当此->a最初为空时,上述操作将适用于第一个分配的对象。

请提供完整的示例。很可能它会打印最后一个元素,因为a是NULL,仅此而已……您将print称为哪里?