-1
私は基本クラスに共有ポインタを持っています。子クラス全体の共有ポインタ
#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
私は2つの子クラスでこの共有ポインタを持っています。しかし、ある子クラスのベクトルを変更すると、その変更は2番目の子クラスに反映されません。これは共有ポインタで動作するべきではありませんか?
私は基本的に、異なるクラス間で共有できるベクトルを作成しようとしており、これを達成するのは本当に苦労しています。
を持つことができなくなりますので、これはあまり柔軟性があります予期しない動作。関連性のないものを取り出してください。 – aschepler
子クラスインスタンス間で 'std :: shared_ptr'をどのように共有するべきですか? –
すべての子クラスにわたって同じベクトルにアクセスしようとしています。 1つのクラスのベクトルに値を追加すると、他のすべての子クラスでその値を確認できます。 – MJ1986