0

私の初心者の質問を許してください..

私は持っている :

class A;
{
    public:
    A(int i) : m_i(i) {}
    int m_i;
}

A newA(i);
{
    return A(i);
}

そして、次のベクトルを埋めたいのですが、オブジェクト A が関数 (newA) で作成されるループを使用します。

vector<A*> list;

for (int i=0 ; i<3; ++i) {  A a = newA(i);  list.push_back(&a); }

&a の値を変更し、同じポインター &a を 3 回押すだけなので、aを使用しても a では機能vector<A>しません。vector<A*>

毎回新しい A を作成し、同じポインターの値を変更しないようにするにはどうすればよいですか。

私は次のことを思いつきましたが、動的割り当てが含まれているため、それが唯一の方法ではないことを願っています..

A newA(i);
{
    return A(i);
}

vector<A*> list;

for (int i=0 ; i<3; ++i)
{
    A a = newA(i);
    list.push_back(new A(a));
}

クラス A は実際にはメモリ内で巨大であるため、ポインターが存在することに注意してください。

4

3 に答える 3