gpt4 book ai didi

c++ - 我可以将 std::make_shared 与没有参数构造函数的结构一起使用吗?

转载 作者:IT老高 更新时间:2023-10-28 22:39:45 44 4
gpt4 key购买 nike

假设我有一个像这样的 struct:

struct S
{
int i;
double d;
std::string s;
};

我可以这样做吗?

std::make_shared<S>(1, 2.1, "Hello")

最佳答案

不,您不能,您必须定义自己的构造函数才能做到这一点。

#include <iostream>
#include <memory>
#include <string>

struct S
{
S(int ii, double dd)
: i(ii)
, d(dd)
{ }
int i;
double d;
};

int main()
{
// S s{1, 2.1};
auto s = std::make_shared<S>(1, 2.1);
//or without constructor, you have to create manually a temporary
auto s1 = std::make_shared<S>(S{1, 2.1});

}

关于c++ - 我可以将 std::make_shared 与没有参数构造函数的结构一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050665/

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