容器中的对象范围

时间:2012-06-16 18:08:57

标签: c++ vector constructor scope

我试图将一个对象向量放在一个类中并遇到范围问题。我需要用不同的参数构造每个参数。我试图避免空构造函数和初始化函数,因为它违背了拥有构造函数的目的。我有这样的事情:

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来获取内部对象,但是我有一个指向对象的指针向量并且必须明确删除,这似乎打败了为其资源提供向量管理内存的目的。我宁愿避免这种情况。

0 个答案:

没有答案