如何通过我的类模板进入功能?(c++)

How to pass my class template into function? (C++)

本文关键字:功能 c++ 我的 何通过      更新时间:2023-10-16

我有一个"stack"类模板,我只需选择堆栈中项目的类型和大小。

这是我的主要:
编辑:
1. 在addItems/removeItems中,有堆栈变量,而不是intStack
2. 更正-> to。(我没有看就复制了它,我忘了改变这些操作符)
http://pastebin.com/89M56ET6
..我的堆栈头:
http://pastebin.com/xKfQVD88

我想做的是,在main中取两个"while"循环,并将它们的内容放入main之外的单独函数中。我想做(实际上,他们已经准备好了)名为"addItems"answers"removeItems"的函数。
问题是,我的"添加/删除项目"函数实际上不做任何事情(我的意思是,我的对象在主要仍然是空的?)。当这些"while"循环做它们必须做的事情时,一切都是正常的(项目被推入堆栈,然后正确弹出)。当我使用"addItems"answers"removeItems"而不是main中的循环时,只添加作品(从函数返回后,一切都消失了)。
我试图动态地使我的堆栈对象作为指针,但我得到了错误,如

对void addItems(Stack -int-)的未定义引用

没有匹配的函数调用addItems(Stack -int- *&)

问题是,如何将Stack对象传递给这些函数?
或者是错误在我的堆栈头?

谢谢你的帮助

问题是您的函数按值取Stack<Type>,这意味着它们得到自己的副本。所以main中的对象不会被修改。:

template <class Type>
void addItems(Stack<Type> stack);

你需要通过引用传递:

template <class Type>
void addItems(Stack<Type>& stack);

按值传递堆栈,这意味着addItems函数接收堆栈对象的副本。通过引用传递它。

而且你的Stack对象没有一个正确的复制构造函数,所以如果你试图复制它,你也会有一些内存问题。