如何在单个语句中从现有对象的副本创建和初始化 unique_ptr?
How do I create and initialize unique_ptr from a copy of an existing object in a single statement?
想象一下,我在某处定义了 const Matrix IDENTITY_MATRIX
,随时可以将其作为基线进行复制。 Matrix
只是一个 struct
.
如果我想创建一个指向新 Matrix
实例的智能指针,用 IDENTITY_MATRIX
的副本初始化,我可以这样做:
std::unique_ptr<Matrix> foo(new Matrix);
*foo = IDENTITY_MATRIX;
有没有一种方法可以使用一条语句来执行初始化?我不想编写辅助函数来执行此操作。如果需要,我将使用两个语句进行初始化。
使用 new
表达式提供初始值设定项
std::unique_ptr<Matrix> foo(new Matrix(IDENTITY_MATRIX));
或使用make_unique
auto foo = std::make_unique<Matrix>(IDENTITY_MATRIX);
想象一下,我在某处定义了 const Matrix IDENTITY_MATRIX
,随时可以将其作为基线进行复制。 Matrix
只是一个 struct
.
如果我想创建一个指向新 Matrix
实例的智能指针,用 IDENTITY_MATRIX
的副本初始化,我可以这样做:
std::unique_ptr<Matrix> foo(new Matrix);
*foo = IDENTITY_MATRIX;
有没有一种方法可以使用一条语句来执行初始化?我不想编写辅助函数来执行此操作。如果需要,我将使用两个语句进行初始化。
使用 new
表达式提供初始值设定项
std::unique_ptr<Matrix> foo(new Matrix(IDENTITY_MATRIX));
或使用make_unique
auto foo = std::make_unique<Matrix>(IDENTITY_MATRIX);