this指针转智能指针
时间: 2023-11-11 08:05:49 浏览: 281
将一个指向动态分配内存的this指针转换成智能指针,可以使用std::shared_ptr或std::unique_ptr。
例如,如果有一个类A,其构造函数中分配了动态内存,可以这样将this指针转换成std::shared_ptr:
```
class A {
public:
A() {
data_ = new int;
}
std::shared_ptr<A> get_shared() {
return shared_from_this();
}
private:
int* data_;
};
int main() {
std::shared_ptr<A> ptr(new A());
std::shared_ptr<A> shared_ptr = ptr->get_shared();
return 0;
}
```
如果要使用std::unique_ptr,则需要在A类中继承std::enable_shared_from_this,并将get_shared函数返回std::shared_ptr类型的指针。
```
class A : public std::enable_shared_from_this<A> {
public:
A() {
data_ = new int;
}
std::shared_ptr<A> get_shared() {
return shared_from_this();
}
private:
int* data_;
};
int main() {
std::unique_ptr<A> ptr(new A());
std::shared_ptr<A> shared_ptr = ptr->get_shared();
return 0;
}
```
阅读全文