gpt4 book ai didi

c++ - Boost 智能指针 : Can I express it in a more concise way?

转载 作者:太空宇宙 更新时间:2023-11-04 14:37:29 25 4
gpt4 key购买 nike

今天我一直在使用 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;
}

上面的循环遍历一个 vector 并以多态方式调用 foo(10)

我的问题是:

可以...

for (vector<shared_ptr<KlasaA> >::const_iterator c_it = vec.begin();
c_it != vec.end(); ++c_it)

cout << c_it->get()->foo(10) << endl;

用更简洁的方式表达?提前致谢。

最佳答案

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);

关于c++ - Boost 智能指针 : Can I express it in a more concise way?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5542681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com