2

オブジェクトのベクトルをクラスに入れようとしていて、スコープで問題が発生しています。それぞれを異なるパラメーターで構築する必要があります。空のコンストラクターと初期化関数を回避しようとしています。これは、コンストラクターを持つ目的を無効にするためです。私はこのようなものを持っています:

class inner
{
    inner::inner(string &dev);
    inner::~inner();
};

class outer
{
    vector<inner> devs;
};

これにより、空のベクトルが作成されます。次に、外側のメソッドで devs ベクター オブジェクトを構築する必要があります。残念ながら、それらはスコープ外になり、デストラクタが同じメソッドで呼び出されています。ベクトル要素をインスタンス化するメソッドではなく、ベクトル (つまり、外側のオブジェクト) のスコープが必要です。ここに私の建設コードがあります:

for (unsigned i=0; i<dev_strings.size(); i++)
{
    devs.resize(i+1, inner(dev_strings[i]));
}

new を使用して内部オブジェクトを取得できると思いますが、それらはオブジェクトへのポインターのベクターを持っているため、明示的に削除する必要があります。これは、ベクターがリソースのメモリを管理するという目的を無効にしているようです。私はこれを避けたいと思います。

4

0 に答える 0