C++ 如何创建指向类的智能指针并初始化类构造函数
我有 其中p2d是通过引用传递给CDT类构造函数的对象 我想用smartpointer替换此选项:C++ 如何创建指向类的智能指针并初始化类构造函数,c++,c++11,smart-pointers,unique-ptr,C++,C++11,Smart Pointers,Unique Ptr,我有 其中p2d是通过引用传递给CDT类构造函数的对象 我想用smartpointer替换此选项: p2t::CDT* cdt = new CDT(p2d); std::unique_ptrCDT(p2d); 但它不像我写的那样工作 为其编写智能指针的正确方法是什么 创建智能指针后,我是否像普通指针一样使用指针(即(*cdt)给我它指向的对象,对吗?) 您应该使用 std::unique_ptr< p2t::CDT> cdt(p2d); 此外,智能指针重载->运算符,所以您可
p2t::CDT* cdt = new CDT(p2d);
std::unique_ptrCDT(p2d);
但它不像我写的那样工作
- 为其编写智能指针的正确方法是什么
- 创建智能指针后,我是否像普通指针一样使用指针(即(*cdt)给我它指向的对象,对吗?)
std::unique_ptr< p2t::CDT> cdt(p2d);
此外,智能指针重载->
运算符,所以您可以像使用常规指针一样调用某些类的方法
void bar(Foo * ptr)
{
// some operations with ptr
}
std::unique_ptr<Foo> cdt(new Foo());
bar(cdt.get()); // can do so
class-Foo{
公众:
空心钢筋();
};
std::unique_ptr ptr(new Foo());
ptr->bar();//它起作用了!
+1。您还可以提到在C++14中提供的std::make_unique
。
void bar(Foo * ptr)
{
// some operations with ptr
}
std::unique_ptr<Foo> cdt(new Foo());
bar(cdt.get()); // can do so
class Foo{
public:
void bar();
};
std::unique_ptr<Foo> ptr(new Foo());
ptr->bar(); // it works!