我要创建大量对象,它们都将存储在一个特定的向量中。所以我这样做了:
std::vector<boost::shared_ptr<MyClass>> t;
t.resize(5000);
然后我编写了一个脚本来生成用于创建所有5000个对象的C ++:
t[0] = boost::make_shared<MyClass>(4659);
t[1] = boost::make_shared<MyClass>(45029);
t[2] = boost::make_shared<MyClass>(2731);
.
.
t[4999]....
然而,在最后我循环,似乎我没有正确构造对象:
for(boost::shared_ptr<MyClass> s : t){
//I cannot see the data members for s when debugging here
s->doSomething(x);
}
似乎s
未实例化。
我是否误用了boost::make_shared
而我实际上并没有创建对象?
答案 0 :(得分:2)
您不需要为此生成C ++代码。举个例子,您应该只生成一个包含整数的文本文件来构造项目,然后执行以下操作:
vector<shared_ptr<MyClass>> t;
for (int x; cin >> x; ) {
t.push_back(make_shared<MyClass>(x));
}
当然,您可以使用任何istream而不是cin
。
如果你这样做,我保证你的载体中不会有任何“缺失”元素。