分配给std :: shared_ptr成员变量

时间:2015-09-24 09:12:23

标签: c++ c++11

我有一个班级Argmax,其成员 std::vector< std::pair<int,float> > Classifier::Classify(const std::vector<cv::Mat> &input_channels) { std::vector< std::vector<float> > output = Predict(input_channels); std::vector< std::pair<int,float> > predictions; for ( int i = 0 ; i < output.size(); i++ ) { std::vector<int> maxN = Argmax(output[i], 1); int idx = maxN[0]; predictions.push_back(std::make_pair(labels_[idx], output[idx])); } return predictions; } 的类型为foo

bar

在该课程中,我想将std::shared_ptr<int>分配给class foo { std::shared_ptr<int> bar; /*other stuff here*/ }; 。但我不能写new int因为指针没有公共赋值运算符。

应该如何我这样做?我可以barbar = new int();,但这些似乎都没有。

2 个答案:

答案 0 :(得分:14)

bar = std::make_shared<int>();是一种方式,特别是如果你想保留赋值运算符的易处理性。

答案 1 :(得分:11)

您可以使用reset

bar.reset(new int());

这将delete当前内容(如果有)并将内部指针设置为new表达式返回的内容。