如何通过我的类模板进入功能?(c++)
How to pass my class template into function? (C++)
我有一个"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对象没有一个正确的复制构造函数,所以如果你试图复制它,你也会有一些内存问题。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 文件系统:复制功能的速度秘诀是什么
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 对可变参数使用声明.如何选择正确的功能
- 询问在设计我的手臂模拟器功能表示格式1
- 功能原型的目的
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?