C++ 类中的私有指针不';在方法中更改时不更新
我有这些类(为了可读性而剥离) 这是Add中的实现C++ 类中的私有指针不';在方法中更改时不更新,c++,C++,我有这些类(为了可读性而剥离) 这是Add中的实现 void intLinkedList::Add (int newX){ node* newNode = new node(); newNode->x = newX; newNode->next = NULL; std::cout << "\n\n" << root << "\n\n" << std::flush; if (root == NULL){ r
void intLinkedList::Add (int newX){
node* newNode = new node();
newNode->x = newX;
newNode->next = NULL;
std::cout << "\n\n" << root << "\n\n" << std::flush;
if (root == NULL){
root = newNode;
return;
}
node * current;
current = root;
while (current->next != NULL){
current = current->next;
}
current->next = newNode;
return;
}
void intLinkedList::Add(int newX){
node*newNode=newNode();
newNode->x=newX;
newNode->next=NULL;
顺便说一句:我想知道为什么人们编写链表实现?为什么不使用
这将生成一个完整的新MyList项。您应该改用引用
void AddValue(intLinkedList& MyList);
编辑:
你为什么使用
case 1: AddValue(MyList); break;
而不是:
MyList.Add(...);
任何间接方式都会增加错误、复杂性和不可读性的风险。你的问题就是一个很好的例子
这是我第一次看到,也许还有很多
希望这是一个切入点。顺便说一句:我想知道为什么人们编写链表实现?为什么不使用
这将生成一个完整的新MyList项。您应该改用引用
void AddValue(intLinkedList& MyList);
编辑:
你为什么使用
case 1: AddValue(MyList); break;
而不是:
MyList.Add(...);
任何间接方式都会增加错误、复杂性和不可读性的风险。你的问题就是一个很好的例子
这是我第一次看到,也许还有很多
希望这是一个切入点。我们不会因为问题简单而否决,我们否决是因为其他标准(即问题不包含简明的可复制程序(如您的程序))“为了可读性而剥离”不要这样做,谁说你没有在其他地方重击堆栈..此代码没有显示你正在描述的行为。当你“为了可读性而剥离”时,你已经删除了导致错误的任何东西。请显示简单的驱动程序program@user657267你知道那很好的[MCVE]
magic thing?节省了大量键入和撰写链接的时间。我们不会因为问题简单而否决,我们否决是因为其他标准(即问题不包含简明的可复制程序(如您的程序))。“为了可读性而剥离”不要这样做,谁说你没有在其他地方重击堆栈..此代码没有显示你正在描述的行为。当你“为了可读性而剥离”时,你已经删除了导致错误的任何东西。请显示简单的驱动程序program@user657267你知道那很好的[MCVE]
magic thing?节省了大量键入和撰写链接的时间。bingo.pro提示:使用printf(cout)时要发出调试语句,请不要忘记输出您正在打印的实例的地址字段…这将有助于找到这些错误,其中的副本未按预期制作。哦,天哪。当然。每次都是一个新列表。请看,我知道我在做一些愚蠢的事情。哈哈。“我想知道人们为什么要编写链表实现?”可能是因为愚蠢的家庭作业和糟糕的老师。谢谢大家的帮助。@Klaus可能不是你想要提及的。你为什么拒绝我的编辑?如果你不想看到我愚蠢的头像出现在你的答案中,只需去编辑并在最后添加一个新行或诸如此类。宾果。专业提示:使用printf(cout)时要发出调试语句,请不要忘记输出您正在打印的实例的地址字段…这将有助于找到这些错误,其中的副本未按预期制作。哦,天哪。当然。每次都是一个新列表。请看,我知道我在做一些愚蠢的事情。哈哈。“我想知道人们为什么要编写链表实现?”可能是因为愚蠢的家庭作业和糟糕的老师。谢谢大家的帮助。@Klaus可能不是你想要提及的。你为什么拒绝我的编辑?如果你不想看到我愚蠢的头像出现在你的答案中,那就去编辑并在最后添加一个换行符吧。