c++ - 如何将我的类模板传递给函数? (C++)

标签 c++ class templates

我有一个“堆栈”类模板,我只需在堆栈中选择项目的类型及其大小。

这是我的主要内容:
编辑:
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/

相关文章:

python - 在 Python 中使用类对函数进行分组

c++ - 如何检测 operator[] 是否适用于 Type?

C++ #define in main,如何让其他.cpp文件看到它?

ios - 类似于关系数据库的模型的类或结构?

c++ - 在 std::function 中返回初始值设定项列表而不是 vector

ruby - 棘手的 ruby​​ 类初始化----为什么同一个类初始化输出不同?

c++ - 链表迭代器模板编译错误

c++ - 调用专用模板函数时强制编译时错误

c++ - 运算符重载 C++

c++ - Boost MPI 的 Autoconf 宏?