【发布时间】:2013-01-20 23:40:43
【问题描述】:
我有一个“堆栈”类模板,我只需在其中选择堆栈中项目的类型及其大小。
这是我的主要内容:
编辑:
1. addItems/removeItems中,有栈变量,不是intStack
2. 更正 -> 为 . (我没有看就复制了,忘记更改这些运算符)
http://pastebin.com/89M56ET6
..还有我的堆栈头:
http://pastebin.com/xKfQVD88
我想做的是在 main 中使用两个“while”循环,并将它们的内容放入 main 之外的单独函数中。我想制作(实际上,它们已经准备好了)名为“addItems”和“removeItems”的函数。
问题是,我的“添加/删除项目”函数实际上什么都不做(我的意思是,我的主要对象仍然是空的?)。当这些“while”循环正在做他们必须做的事情时,一切都很好(项目推入堆栈,然后正确弹出)。当我在 main 中使用“addItems”和“removeItems”而不是循环时,只添加作品(从函数返回后,一切都消失了)。
我试图动态地将我的 Stack 对象作为指针,但我遇到了类似
对 void addItems(Stack -int-) 的未定义引用
或
没有匹配的函数调用 addItems(Stack -int- *&)
问题是,我如何将我的 Stack 对象传递给这些函数?
还是我的堆栈头有误?
感谢您的帮助。
【问题讨论】:
-
下面提供的答案是正确的,有关将对象传递给函数时的不同选项的详细说明,请参阅我对这个问题的回答:stackoverflow.com/questions/7677007/…
-
这是你的真实代码吗?因为你
addItems/removeItems使用了形式参数Stack<Type> stack并且在这些函数的后面你总是访问intStack...所以你忽略这个参数并且应该得到一个编译器错误,除非intStack是一个全局变量。