我在基类中有一个共享指针。
#ifndef ROOM_HPP
#define ROOM_HPP
#include <iostream>
#include <string>
#include <memory>
#include "Pocket.hpp"
using namespace std;
class Room
{
protected:
Room *up;
Room *down;
Room *left;
Room *right;
string name;
shared_ptr<Pocket> p{ new Pocket() };
共享指针指向...
#ifndef POCKET_HPP
#define POCKET_HPP
#include <iostream>
#include <vector>
#include <string>
using std::endl;
using std::vector;
using std::cout;
using std::cin;
using std::string;
class Pocket
{
private:
vector<string> pocket;
public:
//constructor
Pocket();
void addPocket(string);
string getPocket();
};
#endif
我在两个子类中有这个共享指针。但是当我在一个子类中对向量进行更改时,更改不会反映在第二个子类中。不应该使用共享指针吗?
我基本上试图创建一个可以在不同类之间共享的向量,并且很难完成此任务。
答案 0 :(得分:2)
shared_ptr<Pocket> p{ new Pocket() };
^每次创建一个Room时都会调用它,创建多个未连接的Pocket对象。调用它&#34;共享指针&#34;并没有改变这一点,每个房间仍在制作一个独特的Pocket对象。
呼叫&#34;新口袋&#34;需要发生一次,即在任何一个房间外面。然后,任何共享相同Pocket的Rooms都可以将它们的共享指针设置为指向它。
你的另一种选择是制作&#34; Pocket p&#34;所有房间共享的静态变量,但由于房间的子集无法拥有自己的口袋,因此灵活性较低