Win32 应用程序中使用 vector报错

sunlau29 2007-10-28 12:45:44
最近在用Win32 应用程序写一个OpenGL程序,其中在使用vector时遇到了问题,主要代码如下:
vector<CDesk> DeskVec;
CDesk Desk2;
DeskVec.push_back(Desk2);

报错位置是 push_back那行,报错内容是

f:\program files\microsoft visual studio\vc98\include\xutility(39) : error C2582: 'CDesk' : 'operator =' function is unavailable
f:\program files\microsoft visual studio\vc98\include\vector(170) : see reference to function template instantiation 'void __cdecl std::fill(class CDesk *,class CDesk *,const class CDesk &)' being compiled
f:\program files\microsoft visual studio\vc98\include\xutility(25) : error C2582: 'CDesk' : 'operator =' function is unavailable
f:\program files\microsoft visual studio\vc98\include\vector(174) : see reference to function template instantiation 'class CDesk *__cdecl std::copy_backward(class CDesk *,class CDesk *,class CDesk *)' being compiled
...全文
294 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunlau29 2007-11-15
  • 打赏
  • 举报
回复
该重载都重载了,还是没有解决,要不我提供QQ号,有意帮忙我的我把程序发给你们,然后你们看看有什么问题。我的QQ号是260688447
ryfdizuo 2007-11-15
  • 打赏
  • 举报
回复
宁多不少啊,哈哈~~~
wfwsm 2007-11-15
  • 打赏
  • 举报
回复
// copy structor
CDesk::CDesk( const CDesk & desk )
{
//do something
}
bool operator==( const CDesk & desk )
{
//do something
}
CDesk & operator = ( const CDesk & desk )
{
//do thing
return *this;
}
c154649474 2007-11-15
  • 打赏
  • 举报
回复
拷贝构造函数和重载=操作符了没
sunlau29 2007-11-15
  • 打赏
  • 举报
回复
重载了 赋值操作符之后,还是报错,这次错误的内容是
--------------------Configuration: MG2 - Win32 Debug--------------------
Compiling...
InitGL.cpp
f:\program files\microsoft visual studio\vc98\include\xutility(39) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'const class CDesk' (or there is no acceptable conversion)
f:\program files\microsoft visual studio\vc98\include\vector(170) : see reference to function template instantiation 'void __cdecl std::fill(class CDesk *,class CDesk *,const class CDesk &)' being compiled
Error executing cl.exe.

MG2.exe - 1 error(s), 0 warning(s)
johndiyang 2007-10-28
  • 打赏
  • 举报
回复
看信息像是CDesk没有重载 =
飞哥 2007-10-28
  • 打赏
  • 举报
回复
在什么情况下,使用vector需要重载赋值操作符?

比如如果容器是有序的,你就要重载比较符号 <
比如如果容器使用某些查找算法时,可能需要重载==,find,迭代器使用时忘了要不要重载== !=之类的东东了
=好一般你用到才需要重载
sunlau29 2007-10-28
  • 打赏
  • 举报
回复
在什么情况下,使用vector需要重载赋值操作符?
sunlau29 2007-10-28
  • 打赏
  • 举报
回复
在我的CDesk类里面有一个成员函数是void GetInfo(Info &l_info); 里面的Info是一个struct。 如果要重载,如何重载?
花花呀123456 2007-10-28
  • 打赏
  • 举报
回复
又学到了一个东东,哈哈
thecorr 2007-10-28
  • 打赏
  • 举报
回复
重载? 跟着接分才是王道
飞哥 2007-10-28
  • 打赏
  • 举报
回复
用自定义class做stl参数
一般都要重载 == = < 之类的东东

你的,明白?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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