C++ 容器中的对象范围

C++ 容器中的对象范围,c++,vector,constructor,scope,C++,Vector,Constructor,Scope,我试图把一个对象向量放在一个类中,但在作用域上遇到了问题。我需要用不同的参数来构造每一个。我试图避免使用空构造函数和初始化函数,因为这违背了使用构造函数的目的。我有这样的想法: class inner { inner::inner(string &dev); inner::~inner(); }; class outer { vector<inner> devs; }; 类内部 { 内部::内部(字符串和开发); 内部::~inner(); };

我试图把一个对象向量放在一个类中,但在作用域上遇到了问题。我需要用不同的参数来构造每一个。我试图避免使用空构造函数和初始化函数,因为这违背了使用构造函数的目的。我有这样的想法:

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

class outer
{
    vector<inner> devs;
};
类内部
{
内部::内部(字符串和开发);
内部::~inner();
};
类外部
{
矢量devs;
};
这将创建一个空向量。然后我需要在一个外部方法中构造devs向量对象。不幸的是,它们超出了范围,并且在同一个方法中调用了析构函数。我需要的范围是向量(即:外部对象)的范围,而不是实例化向量元素的方法。这是我的构造代码:

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

for(unsigned i=0;问题非常不清楚。只要类型为outer的对象存在,devs对象就存在。请尝试以合理的方式组织您的问题。为什么要以如此奇怪的方式使用resize?您是否尝试过vector的push_back()方法?更好!如果您使用的是c++11,请尝试emplace_back()这个问题非常不清楚。只要类型为outer的对象存在,devs对象就存在。请尝试以合理的方式组织您的问题。为什么要以如此奇怪的方式使用resize?您是否尝试过vector的push_back()方法?甚至更好!如果您使用的是c++11,请尝试emplace_back()