我有一个“堆栈”类模板,我只需在堆栈中选择项目的类型及其大小。
这是我的主要内容:
编辑:
1、addItems/removeItems中,有栈变量,不是intStack
2. 更正 -> 为 . (我没有看就复制了,忘记更改这些运算符)
http://pastebin.com/89M56ET6
..和我的堆栈头:
http://pastebin.com/xKfQVD88
我想要做的是在 main 中使用两个“while”循环,并将它们的内容放入 main 之外的单独函数中。我想制作(实际上,它们已经准备好了)名为“addItems”和“removeItems”的函数。
问题是,我的“添加/删除项目”函数实际上没有执行任何操作(我的意思是,我的 main 中的对象仍然为空?)。当这些“while”循环执行它们必须执行的操作时,一切正常(项目插入堆栈,然后正确弹出)。当我使用“addItems”和“removeItems”而不是主循环中的循环时,仅添加工作(从函数返回后,所有内容都会消失)。
我试图动态地使我的 Stack 对象作为指针,但我收到了类似
undefined reference to void addItems(Stack -int-)
或
no matching function for call to addItems(Stack -int- *&)
问题是,我如何将 Stack 对象传递到这些函数中?
或者我的堆栈 header 有误?
感谢您的帮助。
最佳答案
问题是你的函数需要 Stack<Type>
按值(value)计算,这意味着他们得到了自己的拷贝。所以 main 中的对象不会被修改。:
template <class Type>
void addItems(Stack<Type> stack);
您需要通过引用传递:
template <class Type>
void addItems(Stack<Type>& stack);
关于c++ - 如何将我的类模板传递给函数? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14430651/