2016-01-21 36 views
0

我有很多函数将容器的指针指向const对象作为参数。我需要用指向非const对象的指针容器来调用这些函数。我似乎记得在某个地方阅读,这是不允许的。有没有办法解决这个问题,而不是写2个函数副本?将const指针的容器传递给参数

例子(这个代码不编译):

#include <vector> 
#include <iostream> 
using namespace std; 

void fn(vector<const int *> par) { 
    cout<<"Function with const ptrs\n"<<endl; 
} 

int main() 
{ 
    vector<int *>v; 
    fn(v); 
} 
+2

使用模板。 –

+0

你能写一个答案,我可以接受吗? – SPMP

回答

1

如果它是一个选项,可以考虑让你的函数使用的范围,例如像:

template<typename t_iterator> 
void fn(t_iterator beg_iter, t_iterator end_iter) { 
    for(; beg_iter != end_iter; ++beg_iter) { 
     // do something 
    } 
} 

这应该工作在vector<int*>vector<const int*>,也deque<int*>

1

你可以初始化一个新的载体。

#include <vector> 
#include <iostream> 
using namespace std; 

void fn(vector<const int *> par) { 
    cout << "Function with const ptrs\n" << endl; 
} 

int main() 
{ 
    vector<int *>v; 
    fn(vector<const int *>(v.begin(), v.end())); 
} 
+0

每次我调用一个函数时都很麻烦..对,模板方法会更好 – SPMP

相关问题