オブジェクトのベクトルをクラスに入れようとしていて、スコープで問題が発生しています。それぞれを異なるパラメーターで構築する必要があります。空のコンストラクターと初期化関数を回避しようとしています。これは、コンストラクターを持つ目的を無効にするためです。私はこのようなものを持っています:
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 を使用して内部オブジェクトを取得できると思いますが、それらはオブジェクトへのポインターのベクターを持っているため、明示的に削除する必要があります。これは、ベクターがリソースのメモリを管理するという目的を無効にしているようです。私はこれを避けたいと思います。