Mac*_*rko 0 c++ boost smart-pointers shared-ptr
今天我一直在使用Boost :: shared_ptr,我有一个问题.
vector<shared_ptr<KlasaA> > vec;
vec.push_back(shared_ptr<KlasaA>(new KlasaB));
vec.push_back(shared_ptr<KlasaA>(new KlasaC));
vec.push_back(shared_ptr<KlasaA>(new KlasaC));
vec.push_back(shared_ptr<KlasaA>(new KlasaA));
for (vector<shared_ptr<KlasaA> >::const_iterator c_it = vec.begin();
c_it != vec.end(); ++c_it)
{
cout << c_it->get()->foo(10) << endl;
}
Run Code Online (Sandbox Code Playgroud)
上面的循环遍历向量并以多态方式调用foo(10).
我的问题是:
能够...
for (vector<shared_ptr<KlasaA> >::const_iterator c_it = vec.begin();
c_it != vec.end(); ++c_it)
Run Code Online (Sandbox Code Playgroud)
和
cout << c_it->get()->foo(10) << endl;
Run Code Online (Sandbox Code Playgroud)
以更简洁的方式表达?提前致谢.
typedef boost::shared_ptr<KlasaA> SharedKlasaA;
typedef vector<SharedKlasaA> KlasaAVector;
KlasaAVector vec;
vec.push_back(SharedKlasaA(new KlasaB));
...
for (KlasaAVector::const_iterator ...
cout << (*c_it)->foo(10);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |