关于复制构造函数的问题

uu2pro 2006-09-10 01:33:52


自定义的class,实现了copy构造,重载了=。class里头有个vector<vector<int>*>的指针。当把这个class放入vector的时候vc2003报:
没有可用的复制构造函数或复制构造函数声明为“explicit”。
不知道有没有好的解决办法。
...全文
372 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
uu2pro 2006-09-10
  • 打赏
  • 举报
回复
查到问题了,拷贝构造没加const
uu2pro 2006-09-10
  • 打赏
  • 举报
回复

#include "stdafx.h"
#include "stdlib.h"
#include "conio.h"
#include <vector>
using namespace std;

class A{
int i;
};

class B{
public:
B(){}
B(B& b){
}
B& operator =(B& b){
}
private:
A* a;
};

int main()
{
vector<B> vb;
B b;
vb.push_back(b);

}

正在编译...
testcon.cpp
q:\STLport-4.6.2\stlport\stl\_construct.h(97) : error C2558: class“B” : 没有可用的复制构造函数或复制构造函数声明为“explicit”
q:\STLport-4.6.2\stlport\stl\_vector.h(333) : 参见对正在编译的函数模板实例化“void _STL::_Construct<_Tp,_Tp>(_T1 *,const _T2 &)”的引用
with
[
_Tp=B,
_T1=B,
_T2=B
]
q:\STLport-4.6.2\stlport\stl\_vector.h(331) : 编译类模板成员函数“void _STL::vector<_Tp>::push_back(const _Tp &)”时
with
[
_Tp=B
]
e:\c\testcon\testcon.cpp(29) : 参见对正在编译的类模板实例化“_STL::vector<_Tp>”的引用
with
[
_Tp=B
]
jixingzhong 2006-09-10
  • 打赏
  • 举报
回复
加一个 默认的拷贝构造 试试
(就是函数体为空)
a_b_c_abc6 2006-09-10
  • 打赏
  • 举报
回复
代码贴出来最好解决.
uu2pro 2006-09-10
  • 打赏
  • 举报
回复
可能是我没说清楚,我修改一下。
自定义的class A,实现了copy构造,重载了=。class A里头有个vector<vector<int>*>的指针。当把这个class A放入vector<A>的时候vc2003报:
没有可用的复制构造函数或复制构造函数声明为“explicit”。
不知道有没有好的解决办法。
iambic 2006-09-10
  • 打赏
  • 举报
回复
为什么把你自己的class对象放进类型为vector<int>*的vector中?

64,642

社区成员

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

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