gpt4 book ai didi

c++ - 如何在指针 vector 之间动态转换?

转载 作者:太空狗 更新时间:2023-10-29 19:40:06 26 4
gpt4 key购买 nike

我有:

class T {};

class S: public T {};

vector<T*> v;
vector<S*> w;

transform(v.begin(), v.end(), dynamic_cast_iterator<S*>(w.begin()));

但是,当然,dynamic_cast_iterator 不存在。

最佳答案

这是一个解决方案(使用 boost lambda ):

#include <boost/lambda/lambda.hpp>
#include <boost/lambda/casts.hpp>
#include <algorithm>
#include <iterator>
#include <iostream>

namespace bll = boost::lambda;

struct A { virtual ~A() { } };
struct B : A { void f() { std::cout << "hello, world" << std::endl; } };

int main() {
std::vector<A*> a; a.push_back(new B);
std::vector<B*> b;
std::transform(a.begin(), a.end(), std::back_inserter(b),
bll::ll_dynamic_cast<B*>(bll::_1));
b[0]->f();
delete a[0];
}

关于c++ - 如何在指针 vector 之间动态转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842387/

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