打印

C++传参问题

[复制链接]
1128|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
txcy|  楼主 | 2012-2-25 10:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数定义如下:
template <class TElemType>//迭代每条回边
void Graph<TElemType>::findvector(vector<ArcBox*> &ve)//需要一个参数a
{
  int v;
int u;
vector<ArcBox*>::iterator Iter = ve.Begin();
  for(; Iter != ve.End(); Iter++ )
  {
  //遍历容器,可以取出先前存放的值
u = Iter->headvex;//必经节点
v = Iter->tailvex;//起始节点
DFSOlgraph1(v, u, visited);
  }   
}
函数声明如下:
  void findvector(vector<ArcBox*> & ve);
用了stl的vector,里面装着是指向arcbox的指针,所以参数我就写成这样了,arcbox定义如下:
struct ArcBox
  {
  int headvex,tailvex;
  ArcBox *hlink,*tlink;
  float weight;
  };

编译器提示:
  Graph<TElemType>::findvector”: 无法将函数定义与现有的声明匹配
  定义
  'void Graph<TElemType>::findvector(std::vector<Graph<TElemType>::ArcBox*> &)'
  现有声明
  'void Graph<TElemType>::findvector(std::vector<_Ty> *)'
   
我还有个地方不明白,如果我要调用findvector这个函数
在其他函数里,先定义一个vector<ArcBox*> a;  
//code...
最后这样调用: findvector(a);

请问各位这样做行吗?

相关帖子

沙发
无冕之王| | 2012-2-25 11:06 | 只看该作者
看看变量的生存范围

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝