【发布时间】:2011-10-22 05:04:05
【问题描述】:
我有两个指针。 p1。 p2.
p1 和 p2 都指向不同的类。
这些类有一些相似的方法名称,
我想调用模板函数两次以避免重复代码。
这是我的功能:
template <class T>
void Function(vector<T> & list, T* item, const string & itemName)
看到那个中间参数“item”..如果我想改变项目,我的签名应该是这样的吗?
..或者我应该把它作为
T* & 项目
..或者我应该把它作为
T** 项目
编译器让很多东西滑动,但是当我去绑定所有东西时它会中断。
如何使用我的指针之一调用该函数?
关于铸造的东西?我已经尝试了一切:\
【问题讨论】:
-
你想改变指针本身,还是只改变指向的对象?
-
您的代码应该可以正常工作。您能否发布您的完整代码以查看是否存在 constness 问题或其他问题?
-
@Stefan:不,它不会按原样工作,因为原始指针的副本将传递给函数,并且对指针本身所做的任何更改对调用者都是不可见的。也就是说,假设 OP 想要更改指针 指向 的内容,并且公平地说,OP 非常模糊。如果他只是想改变对象本身,那么是的,它应该按原样工作。
-
我想传入“item”,当它返回时,它可能指向别的东西。代码编译成目标文件,但是当我尝试将它们链接到我的可执行文件时,我遇到了问题。所有错误都涉及未定义的引用。也许我只是错误地调用模板函数?我必须投射我传入的内容吗?或者我可以只调用 Function(list,item,itemName);
-
您的项目是否包含多个库?您是在 .h/.cpp 还是单个 .hpp 文件中定义了您的方法模板?看起来您在这里讨论了 2 个不相关的问题。
标签: c++ templates pointers parameters