gpt4 book ai didi

c++ - 是否有一个仿函数取消对(智能)指针的引用,向上转换它,然后调用它的方法?

转载 作者:搜寻专家 更新时间:2023-10-31 01:23:38 25 4
gpt4 key购买 nike

我有

class A: public B { ...}

vector<A*> v;

我想做

for_each(v.begin(), v.end(), mem_fun_deref(B::blah()));

(其实我有:

vector<unique_ptr<A>>

但应该没关系)

我需要向上转型并调用成员函数。

最佳答案

boost::lambda 可以做到

vector<A*> v; ...
using boost::lambda::_1;
using boost::lambda::bind;
for_each(v.begin(), v.end(), bind(&B::blah, *_1));

无需向上转换。指向基类成员的成员指针也可以应用于派生类。

#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>

关于c++ - 是否有一个仿函数取消对(智能)指针的引用,向上转换它,然后调用它的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082867/

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