vector变量作为函数参数的问题

Scorpiour 2011-04-22 11:32:10
今天写程序的时候突然想试试用vector作参数,于是尝试了下如下的代码

编译器:VC++ 2008 操作系统Win7 Ult

class GETREC
{
friend class SEARCHREC;
public:
//..成员函数
private:
struct RECORD
{
//....
};
vector<RECORD> NewRec;
//...
};

class SEARCHREC
{
public:
SEARCHREC(const vector<RECORD>&);
//...
private:
vector<RECORD>::iterator ITER;
/...
};

//在后面的GETREC类的成员函数中,使用了如下的代码

//.....
SEARCHREC NewSearch(NewRec);

//然后是SEARCHREC的构造函数中

SEARCHREC::SEARCHREC(const vector<RECORD> &TarRec)
{
ITER=TarRec.begin(); //Initializing iterator
//...





于是在编译的时候,编译器提示错误


1>d:\ASSIGNMENT\GetData\searchdata.cpp(5) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::_Vector_const_iterator<_Ty,_Alloc>' (or there is no acceptable conversion)
1> with
1> [
1> _Ty=RECORD,
1> _Alloc=std::allocator<RECORD>
1> ]
1> c:\program files\microsoft visual studio 9.0\vc\include\vector(405): could be 'std::_Vector_iterator<_Ty,_Alloc> &std::_Vector_iterator<_Ty,_Alloc>::operator =(const std::_Vector_iterator<_Ty,_Alloc> &)'
1> with
1> [
1> _Ty=RECORD,
1> _Alloc=std::allocator<RECORD>
1> ]
1> while trying to match the argument list '(std::_Vector_iterator<_Ty,_Alloc>, std::_Vector_const_iterator<_Ty,_Alloc>)'
1> with
1> [
1> _Ty=RECORD,
1> _Alloc=std::allocator<RECORD>
1> ]


难道vector变量不可以用ByRef的方法传递参数嘛?
...全文
475 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztj2005 2011-04-23
  • 打赏
  • 举报
回复


传递一个迭代器做参数看能否成功:
vector<RECORD>::iterator ITER;
Scorpiour 2011-04-23
  • 打赏
  • 举报
回复
Iterator可以作为参数传递,并且无论是ByVal还是ByRef看起来都没问题,操作也正常。

但是Vector变量本身却不能作为参数传递,哪怕是传址也不可以,好奇怪呀。

虽然说因为想用const来进行操作,所以直接传递iterator没有影响,不过想来也许就是因为这个const导致了需要动态操作的vector不可以被传递嘛?

谢谢4楼的提示!

看来VC里面还有太多让人搞不明白的东西存在呀。
Scorpiour 2011-04-23
  • 打赏
  • 举报
回复
让我试试……
Scorpiour 2011-04-22
  • 打赏
  • 举报
回复
但是如果直接在同一个类中操作成员中的vector变量的话,在任何位置定义iterator都不需要重载操作符。

所以我感觉很不解。按理说函数的实参传递应该可以接受各种类型的吧。
seapeaks 2011-04-22
  • 打赏
  • 举报
回复
RECORD
需要定义重载赋值预算符

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧