打开复制构造函数时出错 allocator.h
error in copy constructor opening up allocator.h
在下面的代码中,我创建了一个名为 ele 的 class,我试图将 ele 对象存储在向量 v 中。我通过将复制构造函数委托给具有整数的构造函数来使用深度复制作为论据。我收到一个异常错误,当我尝试 运行 时,头文件 allocator.h 在我的 IDE(devC++) 中打开,但我不知道出了什么问题。
如果我注释掉复制构造函数,程序 运行s 具有浅复制而没有任何编译器错误(但是,这不是我想要做的)
#include <iostream>
#include <vector>
using namespace std;
class ele{
public:
int* data_ptr;
ele(int a) {
data_ptr=new int;
*data_ptr=a;
cout<<"new ele created with data="<<*data_ptr<<endl;
}
ele(ele &s):ele(*s.data_ptr) {
cout<<"object with data="<<*data_ptr<<" copied"<<endl;
}
~ele(){
cout<<*data_ptr<<"destroyed"<<endl;
delete data_ptr;
}
};
void display(ele a){
cout<<*a.data_ptr<<endl;
}
ele create(int k){
ele* a=new ele(k);
return *a;
}
int main(){
vector <ele> v;
int t=10;
while(--t)
{
v.push_back(create(t));
}
}
这是因为你的复制构造函数应该采用 const ele &
ele(const ele &s):ele(*s.data_ptr) {
cout<<"object with data="<<*data_ptr<<" copied"<<endl;
}
在下面的代码中,我创建了一个名为 ele 的 class,我试图将 ele 对象存储在向量 v 中。我通过将复制构造函数委托给具有整数的构造函数来使用深度复制作为论据。我收到一个异常错误,当我尝试 运行 时,头文件 allocator.h 在我的 IDE(devC++) 中打开,但我不知道出了什么问题。
如果我注释掉复制构造函数,程序 运行s 具有浅复制而没有任何编译器错误(但是,这不是我想要做的)
#include <iostream>
#include <vector>
using namespace std;
class ele{
public:
int* data_ptr;
ele(int a) {
data_ptr=new int;
*data_ptr=a;
cout<<"new ele created with data="<<*data_ptr<<endl;
}
ele(ele &s):ele(*s.data_ptr) {
cout<<"object with data="<<*data_ptr<<" copied"<<endl;
}
~ele(){
cout<<*data_ptr<<"destroyed"<<endl;
delete data_ptr;
}
};
void display(ele a){
cout<<*a.data_ptr<<endl;
}
ele create(int k){
ele* a=new ele(k);
return *a;
}
int main(){
vector <ele> v;
int t=10;
while(--t)
{
v.push_back(create(t));
}
}
这是因为你的复制构造函数应该采用 const ele &
ele(const ele &s):ele(*s.data_ptr) {
cout<<"object with data="<<*data_ptr<<" copied"<<endl;
}