gpt4 book ai didi

c++ - 如何为元素( vector 和整数)也是 unique_ptr 的对创建 unique_ptr?

转载 作者:行者123 更新时间:2023-11-28 04:22:36 26 4
gpt4 key购买 nike

我已经搜索过了。但找不到明确的答案。所以我提出了一个新问题。代码如下:

using namespace std;

using pairfortsp = pair<unique_ptr<vector<int>>, unique_ptr<int>>;

int main(int argc, char *argv[]){
unique_ptr<vector<int>> tmpptr1(new vector<int>{1});
unique_ptr<int> tmpptr2(new int(1));
unique_ptr<pairfortsp> tmpptr3(new pairfortsp<tmpptr1,tmpptr2>);
}

当我编译它时,我得到了以下两个错误:

stackover.cpp:25:50: error: invalid operands to binary expression ('pairfortsp *' (aka
'pair<unique_ptr<vector<int> >, unique_ptr<int> > *') and 'unique_ptr<vector<int> >')
unique_ptr<pairfortsp> tmpptr3(new pairfortsp<tmpptr1,tmpptr2>);
..................
stackover.cpp:25:67: error: expected expression
unique_ptr<pairfortsp> tmpptr3(new pairfortsp<tmpptr1,tmpptr2>);

那么像我声明的那样为对创建 unique_ptr 的正确步骤是什么?

谢谢。

最佳答案

看起来您正在尝试将构造函数参数传递给 std::pair作为模板参数。也就是说,您使用的是 < >是而不是 ( ) .

此外,由于 unique_ptr无法复制,必须std::move将它们传递给构造函数。

以下代码使用 g++ -std=c++17 Move.cc 编译.

#include <vector>
#include <memory>
#include <utility>

using namespace std;

using pairfortsp = pair<unique_ptr<vector<int>>, unique_ptr<int>>;

int main(int argc, char *argv[]){
unique_ptr<vector<int>> tmpptr1(new vector<int>{1});
unique_ptr<int> tmpptr2(new int(1));
unique_ptr<pairfortsp> tmpptr3(new pairfortsp(std::move(tmpptr1),std::move(tmpptr2)));
}

关于c++ - 如何为元素( vector 和整数)也是 unique_ptr 的对创建 unique_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55083292/

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