我试图将一个对象向量放在一个类中并遇到范围问题。我需要用不同的参数构造每个参数。我试图避免空构造函数和初始化函数,因为它违背了拥有构造函数的目的。我有这样的事情:
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来获取内部对象,但是我有一个指向对象的指针向量并且必须明确删除,这似乎打败了为其资源提供向量管理内存的目的。我宁愿避免这种情况。