首页 > 解决方案 > 从 shared_pointer 创建weak_pointer 并重用基本指针

问题描述

为什么wp5不指向Integer其值为 的50

#include <memory>
#include <iostream>
#include "DoubleLinkedList.h"

class Integer {
private:
    int number;
public:
    Integer(int number) : number(number) {}

    int get() { return number; }

};

int main() {

    Integer i1(10);
    Integer i2(20);
    i1 = i2;
    std::cout << "i1 = " << i1.get() << std::endl;
    Integer* i3 = new Integer(30);
    std::shared_ptr<Integer> sp3 = std::make_shared<Integer>(i1);
    std::shared_ptr<Integer> sp4 = std::shared_ptr<Integer>(new Integer(40));
    std::weak_ptr<Integer> wp5 = std::shared_ptr<Integer>(new Integer(50));
    std::weak_ptr<Integer> wp6 = sp4;



    return 0;
}

有没有办法创建一个shared_pointer<Integer>或一个weak_pointer<Integer>用作*i3指向的基本指针Integer(30)

标签: c++pointersshared-ptrweak-ptr

解决方案


推荐阅读