小编Cal*_*Bit的帖子

即使在std :: shared_ptr拥有所有权后,shared_from_this也有空的_M_weak_this

Astd::vector使用C ++智能指针(因此向量符号为std::vector<std::shared_ptr<A>>)中存储一个类(我们称之为)。

#include <iostream>
#include <memory>
#include <vector>

class A : std::enable_shared_from_this<A> {
public:
  void doWork();
  std::shared_ptr<A> getSharedRef();
};

void A::doWork() { std::cout << "Working..." << std::endl; }

std::shared_ptr<A> A::getSharedRef() { return shared_from_this(); }

class AManager {
  static std::vector<std::shared_ptr<A>> aList;

public:
  static void init(); // safety because statics
  static void doLotsOfWork();
  static std::shared_ptr<A> createA();
};

std::vector<std::shared_ptr<A>> AManager::aList;

void AManager::init() { aList = std::vector<std::shared_ptr<A>>{}; }

void AManager::doLotsOfWork() {
  for (auto a : aList) {
    a->doWork(); …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector shared-ptr c++11

5
推荐指数
1
解决办法
354
查看次数

标签 统计

c++ ×1

c++11 ×1

shared-ptr ×1

stl ×1

vector ×1