gpt4 book ai didi

c++ - shared_ptr 导致段错误

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:36 25 4
gpt4 key购买 nike

我正在尝试在我的类(class)中使用 shared_ptr,但由于某种原因我遇到了段错误。也许我在做一些愚蠢的事情。

#include <tr1/memory>
#include <iostream>
class Dataset ;
typedef int DataClass;
class Dataset_Impl{
friend class Dataset ;
DataClass *dc;
Dataset_Impl(){dc = new DataClass[10];}
public:
void getSubset(Dataset_Impl* &dObj){
dObj = new Dataset_Impl(); //Causing segfault when using shared_ptr
/*copy subset of 'dc' to dObj->dc and return*/std::cout<<"Copied subset";
}
};
class Dataset{
Dataset_Impl *d;
public:
Dataset (){};
inline void const getSubset(Dataset &dObj) const{d->getSubset(dObj.d);}
};
int main(){
Dataset m1,subset1;std::shared_ptr<Dataset> subset2;
m1.getSubset(subset1);
m1.getSubset((*subset2)); //Causing segfault
}

最佳答案

您还没有创建对象; subset2 是一个空指针。你需要为它创建一个对象来管理:

std::shared_ptr<Dataset> subset2(new Dataset);

关于c++ - shared_ptr 导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4763756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com